//加载资源并且回调 //resName:资源名称、callback:回调函数、isInst:加载完的资源是否实例化、isAutoActive:是否显示 public void LoadResourceAsyncCallback(string resName, GameResManager.LoadResourceCallback callback, bool isAutoActive = false, bool isInst = true) { if (m_poolDict.ContainsKey(resName)) { if (isInst) { callback(m_poolDict[resName].CreateObj(isAutoActive)); } else { callback(m_poolDict[resName].SourceResource); } } else { MainGame.Singleton.StartCoroutine(Coroutine_LoadCallback(resName, callback, isAutoActive, isInst)); } }
//协程-加载资源并且回调 IEnumerator Coroutine_LoadCallback(string resName, GameResManager.LoadResourceCallback callback, bool isAutoActive = false, bool isInst = true) { UnityEngine.Object obj = null; GameResPackage.AsyncLoadObjectData data = new GameResPackage.AsyncLoadObjectData(); IEnumerator e = GameResManager.Singleton.LoadResourceAsync(resName, data); while (true) { e.MoveNext(); if (data.m_isFinish) { break; } yield return(e.Current); } if (data.m_obj != null) { GameObjectPool pool = null; if (m_poolDict.ContainsKey(resName)) { pool = m_poolDict[resName]; } else { pool = new GameObjectPool(data.m_obj, m_poolRoot); m_poolDict.Add(resName, pool); } if (isInst) { obj = pool.CreateObj(isAutoActive); } else { obj = pool.SourceResource; } } callback(obj); }