AB包的依赖:一个资源身上用了别的AB包的资源,如果只加载自己的AB包,会丢失其他资源。需要加载所有依赖的AB包
手动加载依赖包
//AB包的依赖:一个资源身上用了别的AB包的资源,如果只加载自己的AB包,会丢失其他资源。需要加载所有依赖的AB包
//加载AB包,同名AB包不能重新加载,会报错
AssetBundle ab = AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/model");
//加载依赖包
AssetBundle ab2 = AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/icon");
//加载AB包的资源,指定资源类型
GameObject obj = ab.LoadAsset("Cube", typeof(GameObject)) as GameObject;
Instantiate(obj);
通过主包中的依赖信息文件加载依赖包
//AB包的依赖:一个资源身上用了别的AB包的资源,如果只加载自己的AB包,会丢失其他资源。需要加载所有依赖的AB包
//加载AB包,同名AB包不能重新加载,会报错
AssetBundle ab = AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/model");
//加载主包获取依赖信息
AssetBundle abMain = AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/PC");
//加载AB主包的依赖文件
AssetBundleManifest manifest = abMain.LoadAsset<AssetBundleManifest>("AssetBundleManifest");
//从依赖文件中获取依赖的AB包名字
string[] dependencies = manifest.GetAllDependencies("model");
foreach (var dependency in dependencies)
{
AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/" + dependency);
}
//加载AB包的资源,指定资源类型
GameObject obj = ab.LoadAsset("Cube", typeof(GameObject)) as GameObject;
Instantiate(obj);
//如传入True则卸载所有用AB加载的物体,否则只卸载AB包
AssetBundle.UnloadAllAssetBundles(false);
评论(0)
暂无评论