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); }