Esempio n. 1
0
        public override void LoadMainAsset(System.Type assetType, System.Action <UnityEngine.Object> callback)
        {
            // Check error
            if (LoadState != EAssetFileLoadState.LoadAssetFileOK)
            {
                LogSystem.Log(ELogType.Error, $"Can not load asset object, {nameof(AssetBundleLoader)} is not ok : {LoadPath}");
                callback?.Invoke(null);
                return;
            }

            string assetName = AssetSystem.GetCacheFileName(LoadPath);

            LoadAsset(assetName, assetType, callback);
        }
        public override void LoadMainAsset(EAssetType assetType, OnAssetObjectLoad callback)
        {
            // Check error
            if (LoadState != EAssetFileLoadState.LoadAssetFileOK)
            {
                LogSystem.Log(ELogType.Error, $"Can not load asset object, {nameof(AssetBundleLoader)} is not ok : {LoadPath}");
                callback?.Invoke(null, false);
                return;
            }

            // Check secne
            // 注意:场景文件在获取资源对象的时候直接返回成功
            if (assetType == EAssetType.Scene)
            {
                callback?.Invoke(null, true);
                return;
            }

            // 如果加载器不存在
            if (_mainAssetLoader == null)
            {
                string assetName = AssetSystem.GetCacheFileName(LoadPath);
                _mainAssetLoader = new AssetObjectLoader(_cacheBundle, assetName, assetType);
                _mainAssetLoader.LoadCallback = callback;
                _mainAssetLoader.Update();                 //立刻轮询
            }
            else
            {
                if (_mainAssetLoader.IsDone())
                {
                    callback?.Invoke(_mainAssetLoader.AssetObject, _mainAssetLoader.LoadState == EAssetObjectLoadState.LoadAssetObjectOK);
                }
                else
                {
                    _mainAssetLoader.LoadCallback += callback;
                }
            }
        }