我试图从内部存储中读取资产包 . 这有效:
void Start()
{
var myLoadedAssetBundle = AssetBundle.LoadFromFile(Application.persistentDataPath + "/AssetBundles/model_objs");
if (myLoadedAssetBundle == null)
{
Debug.Log("Failed to load AssetBundle!");
return;
}
GameObject wheel = (GameObject)myLoadedAssetBundle.LoadAsset("01_obj");
Instantiate(wheel);
}
但是,当我尝试将其重定向到root时,如下所示:
void Start()
{
var myLoadedAssetBundle = AssetBundle.LoadFromFile("/storage/emulated/0/AssetBundles/model_objs");
if (myLoadedAssetBundle == null)
{
Debug.Log("Failed to load AssetBundle!");
return;
}
GameObject wheel = (GameObject)myLoadedAssetBundle.LoadAsset("01_obj");
Instantiate(wheel);
}
我在logcat上得到 Unable to open archive file: /storage/emulated/0/AssetBundles/model_objs
捆绑完全相同,位于两个位置
2 回答
如果要直接访问资产包,请使用LoadFromFileAsync而不是LoadFromFile:
Colin Young是对的,我对自动生成的清单有问题 . 默认清单如下:
当我从
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="18" />
删除了android:maxSdkVersion="18"
时,我解决了这个问题 .为了获得默认清单,我构建了我的项目并转到
{PROJECT DIRECTORY}\Temp\StagingArea\AndroidManifest.xml
. 然后,我在我的Unity项目中创建了以下嵌套文件夹:Assets/Plugins/Android/
并粘贴上述文件并进行更改 .