public static void UnLoad(Scene scene, Action <SceneEventArg> callBack) { SceneEventArg arg = new SceneEventArg(); AsyncOperation asyncOp = UnityEngine.SceneManagement.SceneManager.UnloadSceneAsync(scene); arg.EveType = SceneEventType.StartUnLoadAsync; arg.AsyncOp = asyncOp; if (callBack != null) { callBack(arg); } arg.EveType = SceneEventType.UnLoadProgress; while (!asyncOp.isDone) { arg.Progress = asyncOp.progress; if (callBack != null) { callBack(arg); } } arg.Progress = 1; if (callBack != null) { callBack(arg); } arg.EveType = SceneEventType.UnLoadComplete; }
public static void LoadAsync(string sceneName, LoadSceneMode mode, Action <SceneEventArg> callBack) { SceneEventArg arg = new SceneEventArg(); AsyncOperation asyncOp = UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(sceneName, mode); asyncOp.allowSceneActivation = false; arg.LoadMode = mode; arg.LoadedScene = GetSceneByName(sceneName); arg.EveType = SceneEventType.StartLoadAsync; if (callBack != null) { callBack(arg); } arg.EveType = SceneEventType.LoadProgress; while (!asyncOp.isDone) { arg.Progress = asyncOp.progress; if (callBack != null) { callBack(arg); } } arg.Progress = 1; arg.EveType = SceneEventType.LoadComplete; if (callBack != null) { callBack(arg); } asyncOp.allowSceneActivation = true; }