Example #1
0
 /// <summary>
 /// 资源加载完毕
 /// </summary>
 /// <param name="request"></param>
 private void LoadFinish(ResLoadRequest request)
 {
     if (request != null)
     {
         ILoadListent listen = null;
         for (int i = 0; i < request.listents.Count; i++)
         {
             listen = request.listents[i];
             if (request.asset != null)
             {
                 AssetPack pack = new AssetPack(request.type, request.isKeepInMemory);
                 pack.asset = request.asset;
                 mAssetPacksDic.Add(request.assetName,pack);
                 listen.Succeed(request.asset);
             }
             else
             {
                 listen.Failed();
             }
         }
     }
 }
Example #2
0
    private void LoadAsset(string prefabName, Type type, ILoadListent callBack, bool isKeepInMemory)
    {
        if (string.IsNullOrEmpty(prefabName))
        {
            if (callBack != null) callBack.Failed();
            return;
        }
        //如果缓存中包含此资源包则直接返回
        if (mAssetPacksDic.ContainsKey(prefabName))
        {
            if (mAssetPacksDic[prefabName].asset == null)
            {
                if (callBack != null)
                {
                    callBack.Failed();
                }
            }
            else
            {
                callBack.Succeed(mAssetPacksDic[prefabName].asset);
            }
            return; //如果找到就不在往下执行
        }

        //如果不包含,则先判断当前正在加载的列表中是否包含,如果包含则直接把回调事件加入
        for (int i = 0; i < mLoadList.Count; i++)
        {
            ResLoadRequest request = mLoadList[i];
            if (!request.assetName.Equals(prefabName)) continue;
            request.AddListent(callBack);
            return;
        }

        foreach (ResLoadRequest request in mWaitLoads)
        {
            if (!request.assetName.Equals(prefabName)) continue;
            request.AddListent(callBack);
            return;
        }

        //如果都不存在的话,则加载进等待队列
        ResLoadRequest loadRequest = new ResLoadRequest(prefabName, isKeepInMemory, type);
        loadRequest.listents.Add(callBack);
        mWaitLoads.Enqueue(loadRequest);
    }