重复下载相同的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; } } }