unity中AssetBundle.LoadAsset参数name的含义
学习AssetBundle时,看到网上从AssetBundle加载资源的的方法一般如下:
1 AssetBundle ab=AssetBundle.LoadFromFile("AssetBundles/scene/model.ab"); 2 GameObject go = ab.LoadAsset<GameObject>("Cube");
我自己动手尝试发现LoadAsset一直返回null,unity版本2018.4,我的代码如下:
AssetBundle ab = AssetBundle.LoadFromFile("assets/res/ui/com/prefab1.unity3d");
Object obj = ab.LoadAsset("Assets/Res/UI/Com/prefab1/SKillIcon.prefab");
prefab1.unity3d.manifest如下:
ManifestFileVersion: 0
CRC: 3804775825
Hashes:
AssetFileHash:
serializedVersion: 2
Hash: a0170fda41556bdab22578bee2082945
TypeTreeHash:
serializedVersion: 2
Hash: 75a1acdd0f98b3c749495ab12239c32d
HashAppended: 0
ClassTypes:
- Class: 1
Script: {instanceID: 0}
- Class: 28
Script: {instanceID: 0}
- Class: 114
Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- Class: 114
Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- Class: 115
Script: {instanceID: 0}
- Class: 213
Script: {instanceID: 0}
- Class: 222
Script: {instanceID: 0}
- Class: 224
Script: {instanceID: 0}
- Class: 687078895
Script: {instanceID: 0}
Assets:
- Assets/Res/UI/Com/prefab1/UiIcon.prefab
- Assets/Res/UI/Com/prefab1/SKillIcon.prefab
Dependencies:
官方文档如下:
AssetBundle.LoadAsset
public Object LoadAsset (string name);
描述
从捆绑包中加载名为 name 的资源。
您应该准确指定 AssetBundleBuild 对象中的名称,即对象的相对路径加文件扩展名。
对照官方文档,name就应该是 Assets/Res/UI/Com/prefab1/SKillIcon.prefab 才对,百思不得其解,最后我试着用AssetBundle的 GetAllAssetNames接口把所有name都打印出来,发现打印的是 AssetBundleBuild.addressableNames里的东西,把name换成addressableNames对应的值后,LoadAsset返回正常了。
也就是说name 代表addressableNames中对应的值。
官方文档如下:
AssetBundleBuild.addressableNames
public string[] addressableNames ;
描述
用于加载资源的可寻址名称。

浙公网安备 33010602011771号