public void Start(string sPath, string sName, AsyncLoadAssetFinish pCallBack, bool bCache = false)
    {
        if (mLoading)
        {
            if (mAsset != null)
            {
                // 下一帧执行 回调
                ResourceLoadManager.Instance.AddNextFrame(mAsset, pCallBack);
            }
            return;
        }

        mAssetBundleName = sPath.ToLower();
        mAssetName       = sName.ToLower();;
        mCache           = bCache;
        mCallBack        = pCallBack;
        mLoading         = true;

        if (ResourceLoadManager.Instance.IsHaveCache(mAssetBundleName))
        {
            ResourceLoadManager.Instance.AddNextFrameFromCache(mAssetBundleName, pCallBack);
            return;
        }

#if ASYNC_LOAD
        mBundleLoader = ResourceLoadManager.Instance.Load(BundleName);
        mBundleLoader.AddRefCount();
        ResourceLoadManager.Instance.AddResourceReq(this);
#else
        SyncLoad();
#endif
    }
    IEnumerator Load_AssetAsync(AssetBundle ab, string sAssetName, AsyncLoadAssetFinish pCallback)
    {
        AssetBundleRequest request = ab.LoadAssetAsync(sAssetName);

        yield return(request);

        pCallback(request.asset);
    }
 public void AddNextFrameFromCache(string sName, AsyncLoadAssetFinish pCallBack)
 {
     UnityEngine.Object pAsset = null;
     if (mCacheList.TryGetValue(sName, out pAsset))
     {
         AddNextFrame(pAsset, pCallBack);
     }
 }
 public void Invoking()
 {
     if (mCallBack != null)
     {
         mCallBack(mAsset);
     }
     mCallBack = null;
     mAsset    = null;
 }
 public void OnStartLoadAsset(AssetBundle ab, string sAssetName, AsyncLoadAssetFinish callback)
 {
     StartCoroutine(Load_AssetAsync(ab, sAssetName, callback));
 }
 public void AddNextFrame(UnityEngine.Object pAsset, AsyncLoadAssetFinish pCallBack)
 {
     mNextFrameInvoking.Add(new AssetData(pAsset, pCallBack));
 }
 public AssetData(UnityEngine.Object pAsset, AsyncLoadAssetFinish pCallBack)
 {
     mAsset    = pAsset;
     mCallBack = pCallBack;
 }