protected override void OnOpen(object arg = null)
        {
            base.OnOpen(arg);

            GameInput gameInput = GameInput.Instance;

            if (gameInput != null)
            {
                GameObjectUtils.SetActiveRecursively(gameInput.gameObject, false);
            }

            this.OnCloseEvent += closeArg =>
            {
                int       btnIndex  = (int)closeArg;
                PveModule pveModule = ModuleAPI.PveModule;
                switch (btnIndex)
                {
                case REPLA_BTN:
                    pveModule.ResumeGame();
                    break;

                case GAME_EXIT_BTN:
                    pveModule.ExitGame();
                    break;
                }
            };

            FinalScore finalScore = (FinalScore)arg;

            ScoreText.text  = string.Format(ScoreTextFormat, finalScore.score);
            PuzzleText.text = string.Format(PuzzleTextFormat, finalScore.puzzle);
        }
        protected override void OnOpen(object arg = null)
        {
            base.OnOpen(arg);

            GameInput gameInput = GameInput.Instance;

            if (gameInput != null)
            {
                GameObjectUtils.SetActiveRecursively(gameInput.gameObject, false);
            }

            this.OnCloseEvent += closeArg =>
            {
                int       btnIndex  = (int)closeArg;
                PveModule pveModule = ModuleAPI.PveModule;
                switch (btnIndex)
                {
                case GO_BACK_BTN:
                    pveModule.ResumeGame();
                    break;

                case GAME_EXIT_BTN:
                    pveModule.ExitGame();
                    break;
                }
            };
        }