【解決済】タイトル画面に「ゲーム終了」を追加したい

ドラねこ
記事: 21
登録日時: 2016年5月27日(金) 15:28

【解決済】タイトル画面に「ゲーム終了」を追加したい

投稿記事by ドラねこ » 2022年8月27日(土) 17:16

RPGツクールMZでタイトル画面に表示されるメニューに「ゲームを終了」させる選択肢を実装したいです。
デフォルトだと「ニューゲーム」「コンティニュー」「オプション」となっていますが、
「オプション」の部分を「ゲーム終了」に変更し、ゲームウィンドウを閉じるようにしたいと考えています。



問題①:タイトル画面の選択肢を自由に増やしたり減らしたりするプラグインが無い
    自分が探した限りだと上記の仕様通りになりそうなものがありそうで見つかりませんでした。
    ご存じの方がいれば教えていただきたいです。
    プラグイン等で対応できるのであればそうしたいのですが、難しい場合はピクチャの表示や選択肢の表示
    を駆使してタイトル画面を自作しようかなと考えています。

問題②:ゲームウィンドウを終了させる方法が見つからない
    タイトル画面からゲームをウィンドウを閉じる以前に、ゲーム中でもウィンドウを閉じる方法が見つかっていない状態です。
    MV版であれば下記スクリプトで実装できたようですが、MZ版での処理が分かりませんでした。
    

コード: 全て選択

window.close();

    

ゲームアツマール等、ブラウザ版での動作は今のところ考えていません。
解決策をご存じの方がいましたら、ご教授の程よろしくお願いいたします。
最後に編集したユーザー ドラねこ on 2022年8月28日(日) 22:59 [ 編集 1 回目 ]

名無し蛙
記事: 304
登録日時: 2015年11月23日(月) 02:46

Re: タイトル画面に「ゲーム終了」を追加したい

投稿記事by 名無し蛙 » 2022年8月28日(日) 00:20

ドラねこ さんが書きました:問題①:タイトル画面の選択肢を自由に増やしたり減らしたりするプラグインが無い
多分簡単過ぎるからわざわざ作る人もいないんでしょう。
「a.ウィンドウの表示項目の作成」と「b.項目決定時の処理割り当て」の該当箇所を改造すれば解決します。
a.の方はデータベース>用語から「オプション」を変更してもいいんですけど
メニュー画面の方にも影響が出てしまうのでついでに変更した方が無難ですね。

ドラねこ さんが書きました:問題②:ゲームウィンドウを終了させる方法が見つからない
MZでもwindow.close()で消せますけど
コアスクリプト側にSceneManager.exit()が用意されてるのでそちらを利用する方が無難でしょう。

コード: 全て選択

/*:
 * @target MZ
*/

(() => {
    'use strict'

    Window_TitleCommand.prototype.makeCommandList = function() {
        const continueEnabled = this.isContinueEnabled();
        this.addCommand(TextManager.newGame, "newGame");
        this.addCommand(TextManager.continue_, "continue", continueEnabled);
        this.addCommand("ゲーム終了", "exit");
    };

    Scene_Title.prototype.createCommandWindow = function() {
        const background = $dataSystem.titleCommandWindow.background;
        const rect = this.commandWindowRect();
        this._commandWindow = new Window_TitleCommand(rect);
        this._commandWindow.setBackgroundType(background);
        this._commandWindow.setHandler("newGame", this.commandNewGame.bind(this));
        this._commandWindow.setHandler("continue", this.commandContinue.bind(this));
        this._commandWindow.setHandler("exit", () => {
            this._commandWindow.close();
            SceneManager.exit();
        });
        this.addWindow(this._commandWindow);
    };
})();

最低限の変更だとこんな感じですか。
お決まりの処理の退避を使っていないので一見コード量が多いですけど2行消して5行追加しただけです。
ドラねこ
記事: 21
登録日時: 2016年5月27日(金) 15:28

Re: タイトル画面に「ゲーム終了」を追加したい

投稿記事by ドラねこ » 2022年8月28日(日) 22:58

名無し蛙様

回答いただきありがとうございます。
window.close()だと私の環境ではフリーズしてしまったのですが、
SceneManager.exit()で無事にゲームウィンドウを閉じる事ができました!

タイトル画面用のコードまでお答えいただき、大変参考になりました。

“MZ:質問” へ戻る