Exemple #1
0
    /// <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);
    }
Exemple #2
0
    /// <summary>
    /// 加载AB资源
    /// </summary>
    /// <param name="assetName">资源名称</param>
    /// <param name="listener">回调</param>
    /// <param name="isKeepInMemory">是否常驻内存</param>
    /// <param name="isAsync">是否异步</param>
    private void LoadForAB(string assetName, ILoadListener listener, bool isKeepInMemory, bool isAsync)
    {
        if (!mABInfoDic.ContainsKey(assetName))
        {
            if (listener != null)
            {
                listener.LoadFailure(assetName);
            }
            Debug.LogError("这个资源不存在AB里面 资源名称:" + 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;
            }
        }
        ABInfo abInfo = GetABInfo(assetName);
        ABReq  req    = new ABReq(abInfo.AssetName, abInfo.ABName, listener, isKeepInMemory, isAsync);

        mLoadWait.Enqueue(req);
    }
Exemple #3
0
 /// <summary>
 /// 加载资源
 /// </summary>
 /// <typeparam name="T">资源类型</typeparam>
 /// <param name="assetName">资源名称</param>
 /// <param name="listener">资源加载完成后的回调</param>
 /// <param name="isKeepInMemory">是否常驻内存</param>
 /// <param name="isAsync">是否异步</param>
 public void Load <T>(string assetName, ILoadListener listener, bool isKeepInMemory = false, bool isAsync = true)
 {
     //如果资源缓存里面已经存在这个资源那么直接返回
     if (mAssetPackDic.ContainsKey(assetName) && mAssetPackDic[assetName] != null)
     {
         if (listener != null)
         {
             listener.LoadFinish(mAssetPackDic[assetName].Asset);
         }
         return;
     }
     //如果是Resources里的资源,调用LoadForRes
     if (mResTxtDic.ContainsKey(assetName))
     {
         LoadForRes <T>(assetName, listener, isKeepInMemory, isAsync);
     }
     else if (mABInfoDic.ContainsKey(assetName))
     {
         LoadForAB(assetName, listener, isKeepInMemory, isAsync);
     }
     else
     {
         if (listener != null)
         {
             listener.LoadFailure(assetName);
         }
         Log.Error("你要加载的资源不存在 资源名称:" + assetName);
     }
 }