重复下载相同的AB包会报异常,下面是解决方法:
private AssetBundle myLoadedAssetBundle;
IEnumerator LoadAssets(string url,string name)
{
//如果AB包已经加载过则不加载
if (myLoadedAssetBundle != null)
{
myLoadedAssetBundle.Unload(false);//关键代码
}
if(url!=null && url!="")
{
ShowName(loadName + ":下载中...");
UnityWebRequest request = UnityWebRequestAssetBundle.GetAssetBundle(url);
yield return request.SendWebRequest();
if (request.isHttpError || request.isNetworkError || !string.IsNullOrEmpty(request.error))
{
Debug.Log(request.error);//异常记录
ShowName(loadName + ":下载失败");
}
else
{
ShowName(loadName + ":下载完成");
myLoadedAssetBundle = DownloadHandlerAssetBundle.GetContent(request);
GameObject go = myLoadedAssetBundle.LoadAsset<GameObject>(name);
Destroy(myModel);//销毁之前的模型
//在GameObject节点下添加物体,以便在target被跟踪时显示。
myModel = (GameObject)Instantiate(go);
//以下是相对父物件
myModel.transform.localPosition = new Vector3 (0, 0, 0);//位置
myModel.transform.localEulerAngles = new Vector3 (90, 90, 0);//角度
myModel.transform.localScale = new Vector3 (10, 10, 10);//大小
myModel.transform.parent = imageTargetController.gameObject.transform;
}
}
}