赞
踩
一个资源身上用到了别的AB包的资源 这个时候 如果只加载自己的AB包,那么通过它创建对象 会出现资源丢失的情况,这种时候 需要把依赖包 一起加载了才能正常。
创建一个材质球,把它挂载到Cube中
此时在场景中显示为红色,
在AssetBundles中Test显示在model中
但是Test显示为None,将其更改为head
运行(此时我们只加载model包不加载head包),发现Test没有显示
因为材质球不在model中,找不到这个材质求。如果想要实现显示材质球,那么要么把head包也加载,要么把材质球放到model中。
/依赖包的关键知识点——利用主包 获取依赖信息
//加载主包
AssetBundle abMain = AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/" + "PC");
//加载主包中的固定文件
AssetBundleManifest abMainifest = abMain.LoadAsset<AssetBundleManifest>("AssetBundleManifest");//规则得到文件信息
//从固定文件中得到依赖信息
string[] strs = abMainifest.GetAllDependencies("model");
//得到依赖包的名字
for (int i = 0; i < strs.Length; i++)
{
Debug.Log(strs[i]);
//加载依赖包
AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/" + strs[i]);
}
值得注意的是,我们无法知道一个包中的一个资源的依赖包,例如我们只需要调用model中的Cube,Cube只依赖head包,但是model中的其他元素依赖另一个包head2。我们只能用
string[] strs = abMainifest.GetAllDependencies("model");去得到这个包内的所有依赖包,而不能单独的去找Cube的依赖包。
PC内源码:
1、请写一个方法用于加载AB包中的依赖配置文件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。