//--------------------------------------------------------------------------------------------------------- /// <summary> /// 异步实列化物体 /// </summary> /// <param name="resName">名字</param> /// <returns></returns> public IEnumerator InstantiateAsync(YieldArg yarg) { while (yieldLoading) { yield return(null); } yieldLoading = true; yarg.progress = 1f; yarg.maxProgress = 1.1f; AssetRequest assetRequest = Assets.LoadAssetAsync(yarg.fn, typeof(GameObject)); while (!assetRequest.isDone) { yarg.progress += assetRequest.progress * 0.1f; yield return(null); } GameObject goObjClone = Instantiate((GameObject)assetRequest.asset); if (goObjClone == null) { Debug.LogError(GetType() + "/InstantiateAsync()/克隆资源不成功,请检查。 path=" + yarg.fn); } goObjClone.AddComponent <OnGameObjectDestroy>().resName = yarg.fn; yarg.result = goObjClone; yarg.isDone = true; yieldLoading = false; }
IEnumerator LoadPrefab() { YieldArg yarg = new YieldArg(prefabUrl); CoroutineMgr.Instance.MyStartCoroutine(ResourcesMgr.Instance.InstantiateAsync(yarg)); while (!yarg.isDone) { yield return(null); } if (EffectGo || !this) { Destroy((GameObject)yarg.result); yield return(null); } GameObject go = (GameObject)yarg.result; SetGameObject(go); }