private void OnResLoadCache(Resource res, string path) { if (res.isSucc) { ResourceObjectQueue resQueue = m_dicGO[path]; resQueue.prefab = res.GetAsset(path); resQueue.isDone = true; List <CacheCallbackStruct> lstCallbackStruct = null; if (m_dicCacheCallback.TryGetValue(path, out lstCallbackStruct)) { while (lstCallbackStruct.Count > 0) { var callbackStruct = lstCallbackStruct[0]; lstCallbackStruct.RemoveAt(0); if (!callbackStruct.isPrefab) { for (int i = 0; i < callbackStruct.count; i++) { var go = GetGameObject(resQueue.prefab, path); SaveObject(path, go); } } callbackStruct.callback.Invoke(path); } } } else { CLog.LogError("加载GameObject资源" + path + "失败"); } }
private IEnumerator LoadAssetAndCallback(Resource res, string path) { ResourceObjectQueue resQueue = m_dicGO[path]; if (resQueue.prefab == null) { IEnumerator enumerator = resQueue.res.GetAssetAsync(path, OnLoadAsset); while (enumerator != null && enumerator.MoveNext()) { yield return(null); } //yield return resQueue.res.GetAssetAsync(path, OnLoadAsset); } resQueue.isDone = true; List <GameObjectPoolCallbackStruct> lstCallback = null; if (m_dicCallback.TryGetValue(path, out lstCallback)) { while (lstCallback.Count > 0) { var callback = lstCallback[0]; lstCallback.RemoveAt(0); UnityEngine.Object go = null; if (callback.isPrefab) { go = resQueue.prefab; } else { if (resQueue.queue.Count > 0) { go = resQueue.queue.Dequeue(); } else { go = GetGameObject(resQueue.prefab, path); } ((GameObject)go).SetActive(true); } callback.callback.Invoke(path, go); } } }