参考链接:
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 }
如下: