[英]Assetbundles not working with iOS
我正在Unity中为iPhone开发一个AR应用程序,该应用程序可从网络服务器下载资产捆绑包并将其附加到图像目标。 到目前为止,几乎所有功能都可以正常工作-除非应用程序尝试加载资产捆绑包时,出现以下错误:
无法加载“资产/捆绑/网址”,因为它不是使用正确的版本或构建目标构建的。
我使用以下脚本创建了资产捆绑包,并从Unity文档中对其进行了稍微修改:
using UnityEditor;
public class CreateAssetBundles
{
[MenuItem ("Assets/Build AssetBundles")]
static void BuildAllAssetBundles ()
{
BuildPipeline.BuildAssetBundles ("Assets/AssetBundles", BuildAssetBundleOptions.None, BuildTarget.iOS);
}
}
然后,我使用scp将资产捆绑包上传到服务器。 该应用程序可以很好地下载资产捆绑包,但无法加载它们。 这是代码:
IEnumerator DownloadAndCache (string username, string modelName){
// Wait for the Caching system to be ready
while (!Caching.ready) {
Debug.Log ("Waiting on caching");
yield return null;
}
//Compute request url for server
UriBuilder uriBuilder = new UriBuilder();
uriBuilder.Scheme = "http";
uriBuilder.Host = BaseURL;
uriBuilder.Path = username.Trim() + "/" + modelName.Trim();
string BundleURL = uriBuilder.ToString ();
Debug.Log ("Attempting to download " + BundleURL);
// Load the AssetBundle file from Cache if it exists with the same version or download and store it in the cache
using(WWW www = WWW.LoadFromCacheOrDownload (BundleURL, version)){
yield return www;
if (www.error != null) {
Debug.Log ("Download error");
throw new Exception ("WWW download had an error:" + www.error);
}
AssetBundle bundle = www.assetBundle;
Debug.Log ("Got assets "+string.Join(",", bundle.GetAllAssetNames ()));
GameObject loadedModel = Instantiate(bundle.LoadAllAssets()[0]) as GameObject;
//attach to the image target
loadedModel.transform.parent = ImageTargetTemplate.gameObject.transform;
loadedModel.transform.position = new Vector3 (0, 0, 0);
loadedModel.transform.localScale = new Vector3 (1, 1, 1);
// Unload the AssetBundles compressed contents to conserve memory
bundle.Unload(false);
} // memory is freed from the web stream (www.Dispose() gets called implicitly)
}
到目前为止,我已经尝试过:
任何帮助表示赞赏。
-更新-
我按照程序员的建议修改了BuildAssetBundle脚本,并在播放器设置面板中将目标平台从“ iPhone”切换为“ Universal”。 我很确定这是解决问题的方法。
这意味着在构建资产捆绑包时,您的目标设备不是iOS。 将目标更改为iOS,然后重建资产捆绑包。
重新编译并重新上传到iOS,这应该可以解决您的问题。
如果那没有用,那么...如果在脚本后端设置为IL2CPP的同时构建了AssetBundle,但是随后将它们与.NET脚本后端一起使用,也会发生该错误。 解决方案是在通过播放器设置更改为.NET脚本后端后,重建资产捆绑包。
也可以尝试更换BuildTarget.iPhone
与EditorUserBuildSettings.activeBuildTarget
,使得包会自动建立当前选择的构建目标。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.