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();
            }
        }
    }
Example #2
0
 public void StartLoadResource()
 {
     if (LoadState == enLoadState.None)
     {
         LoadState = enLoadState.Waiting;
         LoadAsset();
     }
 }
Example #3
0
 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();
    }
Example #6
0
        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();
 }
Example #8
0
 public void LoadAsset()
 {
     LoadState = enLoadState.Loading;
     LoadAssetSync();
 }