public void Loading() { if (string.IsNullOrEmpty(url)) { Debug.LogErrorFormat("NeedLoadString.IsNullOrEmpty(url) == true"); return; } state = SimpleLoadState.Loading; BumPoolManager.BumPoolData data; // 资源池里面已经存在的数据 if (BumLogic.poolManager.tryGet(url, out data)) { data.newUseTime = Time.realtimeSinceStartup; MyCallLater.Add(LoadInPool, 0, data); return; } bool add = BumLogic.poolManager.addLoading(this); if (add) { if (loaders.Count < Loadercount) { loaders.Add(this); StartLoad(); } else { loaderStack.Push(this); } } }
private void LoadInPool(object data) { BumPoolManager.BumPoolData poolData = data as BumPoolManager.BumPoolData; if (poolData is BumPoolManager.BumPoolErrorData) { BumPoolManager.BumPoolErrorData errorData = poolData as BumPoolManager.BumPoolErrorData; errorData.errorCount++; this.state = SimpleLoadState.Failed; this.EndOnly(); return; } #region PoolData switch (poolData.type) { case BumPoolDataType.eBumPoolDataType_byte: break; case BumPoolDataType.eBumPoolDataType_json: loadedData = poolData.resource; break; case BumPoolDataType.eBumPoolDataType_texture2D: loadedData = poolData.resource; break; case BumPoolDataType.eBumPoolDataType_prefab: BumPoolManager.BumPoolPrefabData prefabData = poolData as BumPoolManager.BumPoolPrefabData; loadedData = poolData.resource; if (canceled == false) { loadedData = prefabData.getNew(); } break; default: loadedData = null; Debug.LogWarning("没有此类型的池"); break; } #endregion EndOnly(); }