在努力从资源加载资产(我仍然不知道为什么这实际上不起作用(之后,我终于能够在运行时加载资产,使用以下代码将它们打包到AssetBundles中:
var myBundle = AssetBundle.LoadFromFile("Assets/AssetBundles/soundanchors");
if (myBundle == null)
{
Debug.Log("Failed to load assets from bundle at Assets/AssetBundles");
}
else
{
Debug.Log("Successfully loaded sound anchors from Assets/AssetBundles");
soundAnchors = myBundle.LoadAllAssets();
AddAnchorsToGrid();
}
当我在OS X上构建和运行该项目时,代码运行良好。然而,一旦我在IOS设备上构建并运行该项目,我就再也看不到资产包加载了。
我认为这是因为在IOS上保存捆绑包的路径不同,但我很难找到应该查找它们的位置。
正如你从代码中看到的,我的Assets文件夹中捆绑包的位置在这里:;Assets/AssetBundles/soundanchors";
Unity如何处理IOS上的资产路径?在Unity API中是否有一些常量包含默认的IOS路径前缀?
就我记忆中的IOS而言,您必须在Assets中创建名为StreamingAssets的文件夹,如"Assets/StreamingAssets";把你的包裹放进去。你可以这样加载你的资产:
void Start()
{
var myLoadedAssetBundle = AssetBundle.LoadFromFile(Path.Combine(Application.streamingAssetsPath, "myassetBundle"));
if (myLoadedAssetBundle == null)
{
Debug.Log("Failed to load AssetBundle!");
return;
}
var prefab = myLoadedAssetBundle.LoadAsset<GameObject>("MyObject");
Instantiate(prefab);
myLoadedAssetBundle.Unload(false);
}