protected override async Task AsyncRun() { SceneResource sceneResource = new SceneResource(Url); try { if (Application.isEditor && IsDev) { BuildSettingsCheck(Url); await LoadSceneAsync(); } else { string bundleName = Url + ".unity" + PathRouter.AssetBundleSuffix; var assetBundleHandle = await AssetBundleLoader.AsyncLoad( bundleName, v => Progress = v * 0.5f); await LoadSceneAsync(0.5f); sceneResource.AddDependency(assetBundleHandle); } if (null != SceneResource.Current) { SceneResource.Current.Dispose(); AssetSystem.Instance.GarbageCollect(); } SceneResource.Current = sceneResource; AssetSystem.Instance.AddAsset(sceneResource); Finish(sceneResource); } catch (Exception e) { Finish(null); sceneResource.Dispose(); throw new ApplicationException("Error when loading Scene:" + Url, e); } }
protected override async Task AsyncRun() { PrefabResource prefabResource = new PrefabResource(Url); try { if (IsDev) { prefabResource = LoadInEditor(Url, prefabResource); Progress = 1f; } else { string bundleName = Url + ".prefab" + PathRouter.AssetBundleSuffix; var assetBundleHandle = await AssetBundleLoader.AsyncLoad( bundleName, v => Progress = v); prefabResource.prefabObject = assetBundleHandle.Bundle.LoadAsset( Path.GetFileNameWithoutExtension(Url)); if (null == prefabResource.prefabObject) { throw new ApplicationException(string.Format( "AssetBundle.LoadAsset({0}) => null, Bundle:{1}", Path.GetFileNameWithoutExtension(Url), assetBundleHandle.Path)); } prefabResource.AddDependency(assetBundleHandle); } AssetSystem.Instance.AddAsset(prefabResource); Finish(prefabResource); } catch (Exception e) { Finish(null); prefabResource.Dispose(); throw new ApplicationException("Error when loading Prefab:" + Url, e); } }