/// <summary> /// 加载Resource资源 /// </summary> /// <typeparam name="T">资源类型</typeparam> /// <param name="assetName">资源名称</param> /// <param name="listener">回调</param> /// <param name="isKeepInMemory">是否常驻内存</param> /// <param name="isAsync">是否异步</param> private void LoadForRes <T>(string assetName, ILoadListener listener, bool isKeepInMemory, bool isAsync) { if (!mResTxtDic.ContainsKey(assetName)) { if (listener != null) { listener.LoadFailure(assetName); } Log.Error("这个资源不存在Resources里面 资源名称:" + assetName); return; } for (int i = 0; i < mLoadIn.Count; i++) { if (mLoadIn[i].AssetName == assetName) { Log.Error("正在加载这个资源 资源名称:" + assetName); return; } } for (int i = 0; i < mLoadWait.Count; i++) { if (mLoadWait.ToArray()[i].AssetName == assetName) { Log.Error("这个资源已经等待加载了 资源名称:" + assetName); return; } } ResReq req = new ResReq(assetName, listener, typeof(T), isKeepInMemory, isAsync); mLoadWait.Enqueue(req); }
/// <summary> /// Resource资源加载完成回调 /// </summary> /// <param name="req"></param> private void LoadResFinish(ResReq req) { if (req.Asset == null) { if (req.LoadListener != null) { req.LoadListener.LoadFailure(req.AssetName); } } else { AssetPack asset = new AssetPack(req.AssetName, req.Asset, req.IsKeepInMemory); if (mAssetPackDic.ContainsKey(req.AssetName)) { mAssetPackDic[req.AssetName] = asset; } else { mAssetPackDic.Add(req.AssetName, asset); } req.LoadListener.LoadFinish(asset.Asset); AddAssetToStackTop(asset.AssetName); } }