protected async UniTask <T> LoadAssetAsync <T>(string assetName, IProgress <float> progress = null, CancellationToken token = default) where T : UnityEngine.Object { ProgressDispatcher.Handler handler = null; if (_ab == null) { handler = ProgressDispatcher.instance.Create(progress); progress = handler.CreateProgress(); _ab = await AssetBundleLoader.instance.LoadByGuidAsync(_guid, handler.CreateProgress(), token); } var ret = await _ab.LoadAssetAsync <T>(assetName, progress, token); handler?.Dispose(); return(ret); }
public async UniTask <Scene> LoadAsync(LoadSceneMode loadSceneMode = LoadSceneMode.Additive, IProgress <float> progress = null, CancellationToken token = default) { // todo 次数处理Progress的代码跟AssetReference中的有些重复,考虑重构 ProgressDispatcher.Handler handler = null; if (_assetBundle == null) { handler = ProgressDispatcher.instance.Create(progress); progress = handler.CreateProgress(); _assetBundle = await AssetBundleLoader.instance.LoadByGuidAsync(_guid, handler.CreateProgress(), token); } Scene scene = await _assetBundle.LoadSceneAsync(_assetName, loadSceneMode, progress); handler?.Dispose(); return(scene); }