void D_OnLoadAssetBundleComplete(AssetBundleMonoBehaviour _mono) { bool isLoadAllDependencies = true; if (mDependencies != null && mDependencies.Length > 0) { float temP = 0; foreach (AssetBundleMonoBehaviour d in mDependencies) { temP += d.progress; isLoadAllDependencies &= d.isDone; } progress = temP / (mDependencies.Length + 1); foreach (IAssetBundleRequestInMemory q in mQueueRequest) { q.progressEvent?.Invoke(progress, q.input); } } if (isLoadAllDependencies && mLoadState == enLoadState.Dependencies) { if (fileParameter.isUseAssetBundle) { mLoadState = enLoadState.AssetBundle; AssetBundleCreateRequest requestAssetBundle = AssetBundle.LoadFromFileAsync(fileParameter.assetBundlePath); requestAssetBundle.completed += RequestAssetBundle_completed; } else { mLoadState = enLoadState.Ready; OnExecuteQueueRequest(); } } }
public void StartLoadResource() { if (LoadState == enLoadState.None) { LoadState = enLoadState.Waiting; LoadAsset(); } }
public AssetDatabaseLoader() { AssetBundleName = String.Empty; OnLoadSelfBundleAction = null; OnLoadAllBundleAction = null; LoadMethod = enResourceLoadMethod.LoadFromFile; LoadState = enLoadState.None; LoadMode = enResourceLoadMode.Sync; BundleInfo = null; }
/// <summary> /// 开始加载 /// </summary> public void BeginLoad() { if (mLoadState == enLoadState.Wait) { mLoadState = enLoadState.Dependencies; mDependencies = OnRequestLoadDependencies(this); OnAddOrRemoveDependenciesEvent(mDependencies, true); D_OnLoadAssetBundleComplete(this); } else { OnExecuteQueueRequest(); } }
/// <summary> /// 加载AssetBundle /// </summary> /// <param name="_request">AssetBundleCreateRequest</param> void RequestAssetBundle_completed(AsyncOperation _request) { AssetBundleCreateRequest req = (AssetBundleCreateRequest)_request; mAssetBundle = req.assetBundle; progress = 1; isDone = true; mLoadState = enLoadState.Ready; foreach (IAssetBundleRequestInMemory q in mQueueRequest) { q.progressEvent?.Invoke(progress, q.input); } OnLoadAssetBundleComplete?.Invoke(this); OnExecuteQueueRequest(); }
public void LoadAssetSync() { var assetPath = AssetDatabase.GetAssetPathsFromAssetBundle(AssetBundleName); if (assetPath.Length != 0) { BundleInfo = CreateAssetDatabaseInfo(AssetBundleName, assetPath); BundleInfo.UpdateLastUsedTime(); } LoadState = enLoadState.SelfComplete; OnLoadSelfBundleAction?.Invoke(this); LoadState = enLoadState.AllComplete; BundleInfo.IsReady = true; OnLoadAllBundleAction?.Invoke(BundleInfo, UserData); OnLoadAllBundleAction = null; ReferencePool.Release <AssetDatabaseLoader>(this); }
/// <summary> /// 销毁 /// </summary> protected override void OnDispose() { isDone = false; mIsExecuteQueue = false; progress = 0; mQueueRequest.Clear(); OnAddOrRemoveDependenciesEvent(mDependencies, false); foreach (AssetBundleOutputMonoBehaviour m in mAssetBundleResultMonoBehaviour.Values) { m.Dispose(); } mDependencies = null; if (mAssetBundle != null) { mAssetBundle.Unload(false); } mAssetBundle = null; mLoadState = enLoadState.Wait; base.OnDispose(); }
public void LoadAsset() { LoadState = enLoadState.Loading; LoadAssetSync(); }