Exemple #1
0
        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;
        }
Exemple #2
0
        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;
        }