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
    }
        public void AssetBundleLoadPathsCorrectForGetLoadInfo(string internalId, bool isLocal, bool useUnityWebRequestForLocalBundles)
        {
            if (internalId.StartsWith("jar") && Application.platform != RuntimePlatform.Android)
            {
                Assert.Ignore($"Skipping test {TestContext.CurrentContext.Test.Name} due jar based tests are only for running on Android Platform.");
            }

            var loc = new ResourceLocationBase("dummy", internalId, "dummy", typeof(Object));

            loc.Data = new AssetBundleRequestOptions {
                UseUnityWebRequestForLocalBundles = useUnityWebRequestForLocalBundles
            };
            ProviderOperation <Object> op = new ProviderOperation <Object>();

            op.Init(m_Addressables.ResourceManager, null, loc, new AsyncOperationHandle <IList <AsyncOperationHandle> >());
            ProvideHandle h = new ProvideHandle(m_Addressables.ResourceManager, op);

            AssetBundleResource.GetLoadInfo(h, out AssetBundleResource.LoadType loadType, out string path);
            var expectedLoadType = isLocal ? useUnityWebRequestForLocalBundles ? AssetBundleResource.LoadType.Web : AssetBundleResource.LoadType.Local : AssetBundleResource.LoadType.Web;

            Assert.AreEqual(expectedLoadType, loadType, "Incorrect load type found for internalId " + internalId);
            var expectedPath = internalId;

            if (isLocal && useUnityWebRequestForLocalBundles)
            {
                expectedPath = internalId.StartsWith("jar") ? internalId : "file:///" + Path.GetFullPath(internalId);
            }
            Assert.AreEqual(expectedPath, path);
        }
 public void End()
 {
     mAsset   = null;
     mLoading = false;
     if (mBundleLoader != null)
     {
         mBundleLoader.DelRefCount();
         mBundleLoader = null;
     }
 }
    AssetBundleResource CreateAssetBundleLoad(string sBundleName)
    {
        AssetBundleResource pLoad = new AssetBundleResource(sBundleName);

        mBundleList.Add(sBundleName, pLoad);

        LoadAssetBundle(sBundleName, pLoad.OnAssetBundleCompleted);

        return(pLoad);
    }
    public AssetBundleResource Load(string sName)
    {
        AssetBundleResource pABReq = null;

        if (!mBundleList.TryGetValue(sName, out pABReq))
        {
            pABReq = CreateAssetBundleLoad(sName);

            string[] dependencies = mMainfest.GetAllDependencies(sName);
            if (dependencies != null && dependencies.Length > 0)
            {
                for (int i = 0; i < dependencies.Length; ++i)
                {
                    pABReq.mDependList.Add(Load(dependencies[i]));
                }
            }
        }
        return(pABReq);
    }