public void SwitchToScene(SceneId sceneId, object param = null) { if (sceneId == CurrentSceneId) { LogModule.WarningLog("switch to current scene: " + sceneId); } LogModule.DebugLog("SceneMgr SwitchToScene sceneId:" + sceneId.ToString() + " " + System.DateTime.Now.ToString()); mParam = param; if (mCurScene != null) { mCurScene.OnWillExit(); //App.EventMgr.Post(EventId.SceneWillExit, mCurScene.Id); } if (mSceneTypeDict.ContainsKey(sceneId)) { mNextScene = Activator.CreateInstance(mSceneTypeDict[sceneId]) as SceneBase; if (mNextScene != null) { mNextScene.OnWillEnter(param); } } if (hdlSceneWillSwitch != null) { hdlSceneWillSwitch.Invoke(mCurrentSceneId, sceneId, param); } SceneManager.LoadScene(sceneId.ToString()); }