public void getObj(Action <GameObject> callBack) { if (obj != null) { insObj(callBack); } else { addHandler(callBack); if (status == E_LoadStatus.Wait) { status = E_LoadStatus.Loading; LoadThread.Instance.StartCoroutine(loadObj()); } } }
//异步加载 public IEnumerator doLoad() { status = E_LoadStatus.Loading; AssetBundleCreateRequest req = AssetBundle.LoadFromFileAsync(resPath); while (!req.isDone) { yield return(new WaitForEndOfFrame()); } AssetMgr.add(new PackAsset(resName, resPath, req.assetBundle)); for (int i = 0; i < handler.Count; i++) { handler[i].Invoke(resName); } status = E_LoadStatus.Finish; }
IEnumerator loadObj() { AssetBundleRequest req = ab.LoadAssetAsync(mainName); while (!req.isDone) { yield return(new WaitForEndOfFrame()); } this.obj = req.asset; status = E_LoadStatus.Finish; if (handler != null) { for (int i = 0; i < handler.Count; i++) { insObj(handler[i]); } handler.Clear(); } }
//www load IEnumerator wwwLoad() { //Debug.Log("加载资源" + url); status = E_LoadStatus.Loading; if (string.IsNullOrEmpty(url)) { status = E_LoadStatus.Fail; yield break; } //是否已经存在ab if (AssetMgr.isHave(url)) { for (int i = 0; i < handlerLst.Count; i++) { handlerLst[i].Invoke(url, true, AssetMgr.getBundle(url)); } status = E_LoadStatus.Finish; yield break; } //加载资源 AssetBundleCreateRequest abReq = AssetBundle.LoadFromFileAsync(Path.Combine(Application.dataPath, "Res/AssetBundle/" + url + ".assetbundle")); do { if (abReq.assetBundle == null) { status = E_LoadStatus.Fail; yield break; } yield return(new WaitForEndOfFrame()); } while (!abReq.isDone); AssetMgr.addBundle(url, abReq.assetBundle); for (int i = 0; i < handlerLst.Count; i++) { handlerLst[i].Invoke(url, true, AssetMgr.getBundle(url)); } status = E_LoadStatus.Finish; }
//编辑器下面使用res load IEnumerator onLoad() { status = E_LoadStatus.Loading; if (string.IsNullOrEmpty(url)) { status = E_LoadStatus.Fail; yield break; } ResourceRequest req = Resources.LoadAsync(url); while (!req.isDone) { yield return(new WaitForEndOfFrame()); } UnityEngine.Object obj = req.asset; //if (callBack != null) //{ // GameObject go = GameObject.Instantiate(obj) as GameObject; // // callBack("res.load加载成功", true, go); //} status = E_LoadStatus.Finish; }