一:打AB包
1.首先给要打包的资源设置AssetBundle名字。
注意:把共享的资源打到同一个包里
2.编辑器写代码进行打包。
//参数1:路径 参数2:创建资源包时的选项 参数3:打包的平台
BuildPipeline.BuildAssetBundles("路径", BuildAssetBundleOptions.None, BuildTarget.Android);
可以借助插件(Asset Bundle Browser)进行打包
二:AB包的读取
1.加载单个资源(本地加载)
//本地加载
AssetBundle ab=AssetBundle.LoadFromFile("路径");
//GameObject是要加载的类型,可以使Object,Texture,Material等
//cube 是要加载的资源的名字
GameObject go=ab.LoadAsset<GameObject>("cube");
2.加载所有的资源
//本地加载
AssetBundle ab=AssetBundle.LoadFromFile("路径");
object[] ob=ab.LoadAllAssets();
3.内存异步加载
IEnumerator LoadAB()
{
AssetBundleCreateRequest request=AssetBundle.LoadFromMemoryAsync(File.ReadAllBytes(""));
yield return request;
AssetBundle ab=request.assetBundle;
GameObject go = ab.LoadAsset<GameObject>("资源名字");
}
4.内存同步加载
void LoadAB()
{
AssetBundle ab=AssetBundle.LoadFromMemory(File.ReadAllBytes(""));
GameObject go = ab.LoadAsset<GameObject>("资源名字");
}
5.从服务器加载
IEnumerator LoadAB1()
{
UnityWebRequest wr = UnityWebRequestAssetBundle.GetAssetBundle("服务器的路径");
yield return wr.SendWebRequest();
AssetBundle ab = DownloadHandlerAssetBundle.GetContent(wr);
GameObject go = ab.LoadAsset<GameObject>("资源的名字");
}