public AssetObjectLoader(AssetBundle bundle, string assetName, System.Type assetType)
 {
     _cacheBundle = bundle;
     AssetName    = assetName;
     AssetType    = assetType;
     LoadState    = EAssetObjectLoadState.None;
 }
Exemple #2
0
        /// <summary>
        /// 轮询更新方法
        /// </summary>
        public void Update()
        {
            if (IsDone())
            {
                return;
            }

            if (LoadState == EAssetObjectLoadState.None)
            {
                LoadState = EAssetObjectLoadState.LoadAssetObject;
            }

            // 1. 加载主资源对象
            if (LoadState == EAssetObjectLoadState.LoadAssetObject)
            {
                // Load main asset
                System.Type systemType = AssetSystem.MakeSystemType(AssetType);
                _cacheRequest = _cacheBundle.LoadAssetAsync(AssetName, systemType);
                LoadState     = EAssetObjectLoadState.CheckAssetObject;
            }

            // 2. 检测AssetObject加载结果
            if (LoadState == EAssetObjectLoadState.CheckAssetObject)
            {
                if (_cacheRequest.isDone == false)
                {
                    return;
                }
                AssetObject = _cacheRequest.asset;

                // Check error
                if (AssetObject == null)
                {
                    LoadState = EAssetObjectLoadState.LoadAssetObjectFailed;
                    LoadCallback?.Invoke(AssetObject, false);
                }
                else
                {
                    LoadState = EAssetObjectLoadState.LoadAssetObjectOK;
                    LoadCallback?.Invoke(AssetObject, true);
                }
            }
        }
        /// <summary>
        /// 轮询更新方法
        /// </summary>
        public void Update()
        {
            if (IsDone())
            {
                return;
            }

            if (LoadState == EAssetObjectLoadState.None)
            {
                LoadState = EAssetObjectLoadState.LoadAssetObject;
            }

            // 1. 加载主资源对象
            if (LoadState == EAssetObjectLoadState.LoadAssetObject)
            {
                if (AssetType == null)
                {
                    _cacheRequest = _cacheBundle.LoadAssetAsync(AssetName);
                }
                else
                {
                    _cacheRequest = _cacheBundle.LoadAssetAsync(AssetName, AssetType);
                }
                LoadState = EAssetObjectLoadState.CheckAssetObject;
            }

            // 2. 检测AssetObject加载结果
            if (LoadState == EAssetObjectLoadState.CheckAssetObject)
            {
                if (_cacheRequest.isDone == false)
                {
                    return;
                }
                AssetObject = _cacheRequest.asset;
                LoadState   = AssetObject == null ? EAssetObjectLoadState.LoadAssetObjectFailed : EAssetObjectLoadState.LoadAssetObjectOK;
                LoadCallback?.Invoke(AssetObject);
            }
        }