public void GotoScene(string scneneType, Type t = null, Func <SceneBase> func = null, object param = null) { FairyGUI.GRoot.inst.touchable = false; SceneBase scene = GetScnene(scneneType); if (func == null) { func = () => { return(Activator.CreateInstance(t) as SceneBase); }; } if (scene == null) { scene = func(); scene.SceneName = scneneType; mScenes.Add(scneneType, scene); } if (currentScene != null && scneneType == currentScene.SceneName) { Debug.LogError("当前场景和要到的目标场景重复" + scneneType); currentScene.Enter(param); } else { if (currentScene != null) { currentScene.Leave(); oldScenes.Enqueue(currentScene); } currentScene = mScenes[scneneType]; currentScene.Enter(param); } }