IEnumerator WaitLoadLevel(AssetBundleLoadLevelOperation operation, UnityAction <float> onProgressChanged) { while (!operation.IsDone()) { if (operation.m_Request != null) { operation.m_Request.allowSceneActivation = false; if (operation.m_Request.progress >= 0.9f) { operation.m_Request.allowSceneActivation = true; if (onProgressChanged != null) { onProgressChanged(1); } break; } else { if (onProgressChanged != null) { onProgressChanged(operation.m_Request.progress); } } } yield return(null); } }
// Load level from the given assetBundle. static public AssetBundleLoadOperation LoadLevelAsync (string assetBundleName, string levelName, bool isAdditive) { AssetBundleLoadOperation operation = null; #if UNITY_EDITOR if (SimulateAssetBundleInEditor) { string[] levelPaths = AssetDatabase.GetAssetPathsFromAssetBundleAndAssetName(assetBundleName, levelName); if (levelPaths.Length == 0) { ///@TODO: The error needs to differentiate that an asset bundle name doesn't exist // from that there right scene does not exist in the asset bundle... Debug.LogError("There is no scene with name \"" + levelName + "\" in " + assetBundleName); return null; } if (isAdditive) EditorApplication.LoadLevelAdditiveInPlayMode(levelPaths[0]); else EditorApplication.LoadLevelInPlayMode(levelPaths[0]); operation = new AssetBundleLoadLevelSimulationOperation(); } else #endif { LoadAssetBundle (assetBundleName); operation = new AssetBundleLoadLevelOperation (assetBundleName, levelName, isAdditive); m_InProgressOperations.Add (operation); } return operation; }
static public int Update(IntPtr l) { try { #if DEBUG var method = System.Reflection.MethodBase.GetCurrentMethod(); string methodName = GetMethodName(method); #if UNITY_5_5_OR_NEWER UnityEngine.Profiling.Profiler.BeginSample(methodName); #else Profiler.BeginSample(methodName); #endif #endif AssetBundleLoadLevelOperation self = (AssetBundleLoadLevelOperation)checkSelf(l); var ret = self.Update(); pushValue(l, true); pushValue(l, ret); return(2); } catch (Exception e) { return(error(l, e)); } #if DEBUG finally { #if UNITY_5_5_OR_NEWER UnityEngine.Profiling.Profiler.EndSample(); #else Profiler.EndSample(); #endif } #endif }
static public int constructor(IntPtr l) { try { #if DEBUG var method = System.Reflection.MethodBase.GetCurrentMethod(); string methodName = GetMethodName(method); #if UNITY_5_5_OR_NEWER UnityEngine.Profiling.Profiler.BeginSample(methodName); #else Profiler.BeginSample(methodName); #endif #endif AssetBundleLoadLevelOperation o; System.String a1; checkType(l, 2, out a1); System.String a2; checkType(l, 3, out a2); o = new AssetBundleLoadLevelOperation(a1, a2); pushValue(l, true); pushValue(l, o); return(2); } catch (Exception e) { return(error(l, e)); } #if DEBUG finally { #if UNITY_5_5_OR_NEWER UnityEngine.Profiling.Profiler.EndSample(); #else Profiler.EndSample(); #endif } #endif }
public static AssetBundleLoadOperation LoadLevelAsync(string assetBundleName, string levelName, bool isAdditive, string manifestAssetBundleName = null) { LoadAssetBundle(assetBundleName, false, null, levelName)?.Ensure(); var ll = new AssetBundleLoadLevelOperation(assetBundleName, levelName, isAdditive, manifestAssetBundleName); ll.Update(); return(ll); }
public static AssetBundleLoadOperation LoadLevelAsync(string assetBundleName, string levelName, bool isAdditive, ILoadingProgress loadingProgress = null) { LoadAssetBundle(assetBundleName, 0); AssetBundleLoadOperation operation = new AssetBundleLoadLevelOperation(assetBundleName, levelName, isAdditive, ref loadingProgress); inProgressOperationList.Add(operation); return(operation); }
// Load level from the given assetBundle. static public AssetBundleLoadLevelOperation LoadLevelAsync(string assetBundleName, string levelName, bool isAdditive) { AssetBundleLoadLevelOperation operation = null; LoadAssetBundle(assetBundleName); operation = new AssetBundleLoadLevelOperation(assetBundleName, levelName, isAdditive); m_InProgressOperations.Add(operation); return(operation); }
static int LoadLevelAsync(IntPtr L) { LuaScriptMgr.CheckArgsCount(L, 3); string arg0 = LuaScriptMgr.GetLuaString(L, 1); string arg1 = LuaScriptMgr.GetLuaString(L, 2); bool arg2 = LuaScriptMgr.GetBoolean(L, 3); AssetBundleLoadLevelOperation o = ResourceManager.LoadLevelAsync(arg0, arg1, arg2); LuaScriptMgr.Push(L, o); return(1); }
public static AssetBundleLoadOperation LoadLevelAsync(string bundleName, string levelName, bool isAdditive) { Debug.Log("Load level: " + bundleName + " - " + levelName + " - " + isAdditive); LoadBunlde(bundleName); AssetBundleLoadOperation operation = new AssetBundleLoadLevelOperation(bundleName, levelName, isAdditive); inProgressOperations.Add(operation); return(operation); }
// Load level from the given assetBundle. public AssetBundleLoadOperation LoadLevelAsync(string a_assetBundleName, string a_levelName, bool a_isAdditive, bool a_allowSceneActivation) { AssetBundleLoadOperation operation = null; #if UNITY_EDITOR if (SimulateAssetBundleInEditor) { var levelPaths = AssetDatabase.GetAssetPathsFromAssetBundleAndAssetName(a_assetBundleName, a_levelName); if (levelPaths.Length == 0) { ///@TODO: The error needs to differentiate that an asset bundle name doesn't exist // from that there right scene does not exist in the asset bundle... Debug.LogError("There is no scene with name \"" + a_levelName + "\" in " + a_assetBundleName); return(null); } if (a_isAdditive) { EditorApplication.LoadLevelAdditiveInPlayMode(levelPaths[0]); } else { EditorApplication.LoadLevelInPlayMode(levelPaths[0]); } operation = new AssetBundleLoadLevelSimulationOperation(); } else #endif { var key = AssetToKey(a_assetBundleName, a_levelName); AssetBundleLoadOperation inProgressOperation; if (m_inProgressOperationsByName.TryGetValue(key, out inProgressOperation)) { var loadLevelOperation = inProgressOperation as AssetBundleLoadLevelOperation; if (loadLevelOperation != null) { return(loadLevelOperation); } } LoadAssetBundle(a_assetBundleName); operation = new AssetBundleLoadLevelOperation(a_assetBundleName, a_levelName, a_isAdditive, a_allowSceneActivation); m_inProgressOperationsByName.Add(key, operation); m_inProgressOperations.Add(new KeyValuePair <string, AssetBundleLoadOperation>(key, operation)); } return(operation); }
public static AssetBundleLoadOperation LoadLevelAsync(string assetBundleName, string levelName) { AssetBundleLoadOperation operation = null; #if UNITY_EDITOR if (SimulateAssetBundleInEditor) { operation = new AssetBundleLoadLevelSimulationOperation(assetBundleName, levelName); } else #endif { assetBundleName = RemapVariantName(assetBundleName); LoadAssetBundle(assetBundleName, true); operation = new AssetBundleLoadLevelOperation(assetBundleName, levelName); m_InProgressOperations.Add(operation); } return(operation); }
// Load level from the given assetBundle. public static AMLoadOperation LoadLevelAsync(string assetBundleName, string levelName, bool isAdditive) { AMLoadOperation operation = null; #if UNITY_EDITOR if (SimulateAssetBundleInEditor) { operation = new AssetBundleLoadLevelSimulationOperation(assetBundleName, levelName, isAdditive); } else #endif { LoadAssetBundle(assetBundleName, false); operation = new AssetBundleLoadLevelOperation(assetBundleName, levelName, isAdditive); m_inProgressOperations.Add(operation); } return(operation); }
public string LoadSceneAsync(string assetBundle, string sceneName, bool isAdditive, bool allowSceneActivation = true, OnLoadComplete callback = null) { if (string.IsNullOrEmpty(assetBundle)) { return(string.Empty); } assetBundle = assetBundle.ToLower(); if (IsInLoading(sceneName)) { RegistCallback(sceneName, callback); return(sceneName); } RegistCallback(sceneName, callback); m_LoadSceneOpration = AssetBundleManager.LoadLevelAsync(assetBundle, sceneName, isAdditive, allowSceneActivation); LoadingSceneProgress = 0; return(sceneName); }
/// <summary> /// Loads the level async. /// </summary> /// <returns>The level async.</returns> /// <param name="assetBundleName">Asset bundle name.</param> /// <param name="levelName">Level name.</param> /// <param name="isAdditive">If set to <c>true</c> is additive.</param> public static AssetLoadOperation LoadLevelAsync(string assetBundleName, string levelName, bool isAdditive) { AssetLoadOperation operation = null; #if UNITY_EDITOR if (SimulateAssetBundleInEditor) { operation = new AssetBundleLoadLevelSimulationOperation(assetBundleName, levelName, isAdditive); } else #endif { CollectionDependenciesLoadTask(assetBundleName); operation = new AssetBundleLoadLevelOperation(assetBundleName, levelName, isAdditive); m_InProgressOperations.Add(operation); } return(operation); }
/// <summary> /// 从url加载出场景 /// </summary> /// <param name="assetBundleName"></param> /// <param name="assetName"></param> /// <param name="isAddictive"></param> /// <param name="onLevelLoad"></param> public void LoadLevelFromUrlAsync(string assetBundleName, string assetName, bool isAddictive, UnityAction <float> onProgressChange) { #if UNITY_EDITOR if (canSimulation && SimulateAssetBundleInEditor) { simuationLoader.LoadSceneAsync(assetBundleName, assetName, isAddictive, onProgressChange); return; } #endif if (activeLoader != null) { LoadMenu(() => { AssetBundleLoadLevelOperation operation = activeLoader.LoadLevelAsync(assetBundleName, assetName, isAddictive); StartCoroutine(WaitLoadLevel(operation, onProgressChange)); }); } else { Debug.Log("Please Set Menu"); } }
public void Load() { if (!this.assetBundleName.IsNullOrEmpty()) { if (!this.isAsync) { AssetBundleManager.LoadLevel(this.assetBundleName, this.levelName, this.isAdd, this.manifestFileName); } else { this.assetBundleOperation = AssetBundleManager.LoadLevelAsync(this.assetBundleName, this.levelName, this.isAdd, this.manifestFileName) as AssetBundleLoadLevelOperation; } } else if (!this.isAsync) { SceneManager.LoadScene(this.levelName, !this.isAdd ? (LoadSceneMode)0 : (LoadSceneMode)1); } else { this.operation = SceneManager.LoadSceneAsync(this.levelName, !this.isAdd ? (LoadSceneMode)0 : (LoadSceneMode)1); } }
IEnumerator WaitLoadLevel(AssetBundleLoadLevelOperation operation, UnityAction <float> onProgressChanged) { var retio = 0.7f; while (!operation.IsDone()) { if (operation.m_Request != null) { Debug.Log("operation.m_Request.progress:" + operation.m_Request.progress); operation.m_Request.allowSceneActivation = false; if (operation.m_Request.progress >= 0.9f) { operation.m_Request.allowSceneActivation = true; if (onProgressChanged != null) { onProgressChanged(1); } break; } else { if (onProgressChanged != null) { onProgressChanged(operation.m_Request.progress * (1 - retio) + retio); } } } else { Debug.Log("operation.progress:" + operation.progress); onProgressChanged(operation.progress * retio); } yield return(null); } //activeLoader.UnloadAssetBundle(operation.AssetBundleName); System.GC.Collect(); }
// Load level from the given assetBundle. // *********** 주요 사용하는 함수 *********** static public AssetBundleLoadOperation LoadLevelAsync(string assetBundleName, string levelName, bool isAdditive) { Log(LogType.Info, "Loading " + levelName + " from " + assetBundleName + " bundle"); AssetBundleLoadOperation operation = null; #if UNITY_EDITOR if (SimulateAssetBundleInEditor) { operation = new AssetBundleLoadLevelSimulationOperation(assetBundleName, levelName, isAdditive); } else #endif { assetBundleName = RemapVariantName(assetBundleName); LoadAssetBundle(assetBundleName); operation = new AssetBundleLoadLevelOperation(assetBundleName, levelName, isAdditive); m_InProgressOperations.Add(operation); } return(operation); }
private void OnSceneLoaded(Scene scene, LoadSceneMode mode) { m_LoadSceneMode = mode; if (m_LoadSceneOpration != null) { m_LoadedScenesAssetBundle[scene.name] = m_LoadSceneOpration.AssetBundle; } if (mode == LoadSceneMode.Single) { IsLoadingScene = false; LoadingSceneProgress = 1; Callback(scene.name); m_LoadSceneOpration = null; } else if (mode == LoadSceneMode.Additive) { IsLoadingScene = false; LoadingSceneProgress = 1; Callback(scene.name); m_LoadSceneOpration = null; } }
protected override void OnUpdate(float delta) { base.OnUpdate(delta); if (!IsInited) { // 等AssetBundleManifest初始化完成,再继续更新其他Operation #if UNITY_EDITOR if (AssetBundleManager.SimulateAssetBundleInEditor) { IsInited = true; Callback(Utility.GetPlatformName()); } else { #endif if (m_AssetBundleLoadManifestOperation != null && m_AssetBundleLoadManifestOperation.IsDone()) { IsInited = true; Callback(Utility.GetPlatformName(), m_AssetBundleLoadManifestOperation.GetAsset <AssetBundleManifest>(), m_AssetBundleLoadManifestOperation.Error); m_AssetBundleLoadManifestOperation = null; } #if UNITY_EDITOR } #endif } else { //bundle UpdateLoadAssets(); //场景 if (m_LoadSceneOpration != null) { IsLoadingScene = true; LoadingSceneProgress = m_LoadSceneOpration.Progress(); if (m_LoadSceneOpration.IsDone() && !string.IsNullOrEmpty(m_LoadSceneOpration.Error)) { IsLoadingScene = false; Callback(m_LoadSceneOpration.LevelName, null, m_LoadSceneOpration.Error); m_LoadSceneOpration = null; } } } #if UNITY_EDITOR if (isDirty) { isDirty = false; InspectorShower.Clear(); InspectorShower.AddRange(m_AssetCaches.Values); InspectorShower.Sort( (a, b) => { if (a.hold != b.hold) { return(a.hold - b.hold); } else if (a.refCount != b.refCount) { return(b.refCount - a.refCount); } else { return(string.Compare(a.assetName, b.assetName)); } }); } #endif }
// Starts a load operation for a level from the given asset bundle. static public AssetBundleLoadOperation LoadLevelAsync(string assetBundleName, string levelName, bool isAdditive) { Log(LogType.Info, "Loading " + levelName + " from " + assetBundleName + " bundle"); AssetBundleLoadOperation operation = null; #if UNITY_EDITOR if (SimulateAssetBundleInEditor) { operation = new AssetBundleLoadLevelSimulationOperation(assetBundleName, levelName, isAdditive); } else #endif { assetBundleName = RemapVariantName(assetBundleName); LoadAssetBundle(assetBundleName); operation = new AssetBundleLoadLevelOperation(assetBundleName, levelName, isAdditive); m_InProgressOperations.Add(operation); } return operation; }
// Load level from the given assetBundle. public static AssetBundleLoadLevelOperation LoadLevelAsync(string assetBundleName, string levelName, bool isAdditive) { AssetBundleLoadLevelOperation operation = null; LoadAssetBundle(assetBundleName); operation = new AssetBundleLoadLevelOperation(assetBundleName, levelName, isAdditive); m_InProgressOperations.Add(operation); return operation; }
public static AssetBundleLoadOperation LoadLevelAsync(string assetBundleName, string levelName, bool isAdditive) { Log(LogType.Info, "Loading " + levelName + " from " + assetBundleName + " bundle"); AssetBundleLoadOperation operation = null; assetBundleName = RemapVariantName(assetBundleName); LoadAssetBundle(assetBundleName); operation = new AssetBundleLoadLevelOperation(assetBundleName, levelName, isAdditive); _operations.Add(operation); return operation; }
// Load level from the given assetBundle. public static AssetBundleLoadOperation LoadLevelAsync(string assetBundleName, string levelName, bool isAdditive) { AssetBundleLoadOperation operation = null; #if UNITY_EDITOR if (SimulateAssetBundleInEditor) { string[] levelPaths = AssetDatabase.GetAssetPathsFromAssetBundleAndAssetName(assetBundleName, levelName); if (levelPaths.Length == 0) { ///@TODO: The error needs to differentiate that an asset bundle name doesn't exist // from that there right scene does not exist in the asset bundle... Debug.LogError("There is no scene with name \"" + levelName + "\" in " + assetBundleName); return null; } if (isAdditive) EditorApplication.LoadLevelAdditiveInPlayMode(levelPaths[0]); else EditorApplication.LoadLevelInPlayMode(levelPaths[0]); operation = new AssetBundleLoadLevelSimulationOperation(); } else #endif { LoadAssetBundle (assetBundleName); operation = new AssetBundleLoadLevelOperation (assetBundleName, levelName, isAdditive); m_InProgressOperations.Add (operation); } return operation; }