public void SetScreen(BaseScreen.Type type, object[] data = null, bool isFadeIn = false, bool keepPrevScreen = false) { if (currentScreen != null) { if (currentScreen.type == type) { return; } if (keepPrevScreen) { previousScreen = currentScreen; previousScreen.Hide(); } else { currentScreen.Close(); } } GameObject tempGameObject; switch (type) { case BaseScreen.Type.LOBBY: tempGameObject = NGUITools.AddChild(root, Resources.Load(Global.SCREEN_PATH + "/LobbyScreen/LobbyScreen", typeof(GameObject)) as GameObject); tempGameObject.name = "LobbyScreen"; LobbyScreen = tempGameObject.GetComponent <LobbyScreen>(); currentScreen = LobbyScreen; LobbyScreen.Init(data); LobbyScreen.Open(); break; case BaseScreen.Type.SELECT_GAME: tempGameObject = NGUITools.AddChild(root, Resources.Load(Global.SCREEN_PATH + "/SelectGameScreen/SelectGameScreen", typeof(GameObject)) as GameObject); tempGameObject.name = "SelectGameScreen"; SelectGameScreen = tempGameObject.GetComponent <SelectGameScreen>(); currentScreen = SelectGameScreen; SelectGameScreen.Init(data); SelectGameScreen.Open(); break; case BaseScreen.Type.SELECT_ROOM: tempGameObject = NGUITools.AddChild(root, Resources.Load(Global.SCREEN_PATH + "/SelectRoomScreen/SelectRoomScreen", typeof(GameObject)) as GameObject); tempGameObject.name = "SelectRoomScreen"; SelectRoomScreen = tempGameObject.GetComponent <SelectRoomScreen>(); currentScreen = SelectRoomScreen; SelectRoomScreen.Init(data); SelectRoomScreen.Open(); break; case BaseScreen.Type.LEADERBOARD: tempGameObject = NGUITools.AddChild(root, Resources.Load(Global.SCREEN_PATH + "/LeaderboardScreen/LeaderboardScreen", typeof(GameObject)) as GameObject); tempGameObject.name = "LeaderboardScreen"; LeaderboardScreen = tempGameObject.GetComponent <LeaderboardScreen>(); currentScreen = LeaderboardScreen; LeaderboardScreen.Init(data); LeaderboardScreen.Open(); break; // when open gamescreen, first element in data will be GameType case BaseScreen.Type.GAME_SCREEN: currentScreen = SetGameScreen((BaseGameScreen.GameType)data[0], data); break; case BaseScreen.Type.SLOT_GAME_SCREEN: currentScreen = SetSlotGameScreen((BaseSlotMachineScreen.GameType)data[0], data); break; } if (isFadeIn) { // currentScreen.FadeIn(); PopupManager.Instance.FadeInScreen(); } }