コード例 #1
0
ファイル: GlobalManager.cs プロジェクト: cckt123/BJSYGameCore
        /// <summary>
        /// 异步加载场景。
        /// </summary>
        /// <param name="scenePath"></param>
        /// <param name="loadMode"></param>
        /// <returns></returns>
        public LoadSceneOperation loadSceneAsync(string scenePath, LoadSceneMode loadMode, Action callback = null)
        {
            //触发加载场景事件
            foreach (LocalManager local in locals)
            {
                foreach (Manager manager in local.managers)
                {
                    manager.onSceneLoad(scenePath);
                }
            }
            //加载场景
            LoadSceneOperation operation = new LoadSceneOperation(scenePath, loadMode);

            operation.onSceneLoaded += Operation_onSceneLoaded;
            operation.onSceneLoaded += o =>
            {
                callback?.Invoke();
            };
            return(operation);
        }
コード例 #2
0
ファイル: GlobalManager.cs プロジェクト: cckt123/BJSYGameCore
        private void Operation_onSceneLoaded(LoadSceneOperation operation)
        {
            //按道理来讲场景里的东西应该都Awake过了,以防万一还是检查一下场景里的LocalManager吧。
            Scene        scene        = SceneManager.GetSceneByPath(operation.scenePath);
            LocalManager currentLocal = scene.findInstance <LocalManager>();

            if (currentLocal == null)
            {
                GameObject gameObject = new GameObject("LocalManager");
                SceneManager.MoveGameObjectToScene(gameObject, scene);
                currentLocal = gameObject.AddComponent <LocalManager>();
            }
            registerLocal(currentLocal);
            //触发场景加载完毕事件
            foreach (LocalManager local in locals)
            {
                foreach (Manager manager in local.managers)
                {
                    manager.onSceneLoaded(operation.scenePath);
                }
            }
        }