[Unity热更新]01.打包与加载基础

参考链接:

https://www.jianshu.com/p/7e7b34b24296

unity版本:2018.3.8

1.打包

新建一个Cube,保存为prefab,使用下面的脚本进行打包(先设置AssetBundleName然后打包)

打包脚本:

 1 using UnityEngine;
 2 using UnityEditor;
 3 using System.IO;
 4 
 5 public class CreateAssetBundle : Editor
 6 {
 7     [MenuItem("AssetBundle/01.SetAssetBundleName")]
 8     static void SetAssetBundleName()
 9     {
10         Object[] objects = Selection.objects;
11         foreach (Object o in objects)
12         {
13             string assetPath = AssetDatabase.GetAssetPath(o);
14             AssetImporter assetImporter = AssetImporter.GetAtPath(assetPath);
15             assetImporter.assetBundleName = o.name; 
16             assetImporter.SaveAndReimport();
17         }
18         AssetDatabase.Refresh();
19     }
20 
21     [MenuItem("AssetBundle/02.BuildAll")]
22     static void BuildAll()
23     {
24         string path = Application.dataPath + "/AB/";
25         if (Directory.Exists(path))
26         {
27             Directory.Delete(path, true);
28         }
29         Directory.CreateDirectory(path);
30         BuildPipeline.BuildAssetBundles(path, BuildAssetBundleOptions.None, BuildTarget.Android);
31         AssetDatabase.Refresh();
32     }
33 }

如下:

2.加载

 1 using UnityEngine;
 2 
 3 public class TestAB : MonoBehaviour
 4 {
 5     void Start()
 6     {
 7         AssetBundle ab = AssetBundle.LoadFromFile("Assets/AB/cube");
 8         if (ab != null)
 9         {
10             GameObject go = Instantiate(ab.LoadAsset<GameObject>("cube"));
11             go.transform.localScale = Vector3.one * 2;
12         }
13     }
14 }

如下:

原文地址:https://www.cnblogs.com/lyh916/p/10922359.html