お世話になっております。
ツクールMZではイベントコマンドからセーブ画面を開いた際、Xキー等でセーブ画面を閉じてキャンセル出来てしまいます。
取り返しのつかない選択シーンの前に手動セーブしないと先に進めない仕様を作りたいため、これを一時的にキャンセルできないようにしたく思っています。
(セーブデータの意図せぬ上書きを避けるため、オートセーブではなく手動セーブを使用しています)
以下にMVで同様のことを実現出来るムノクラ様のプラグインがあるようですが、MZで同じ仕様にしたいと思っています。
viewtopic.php?t=10951
MZで実現できる方法をご存じの方がいらっしゃったらご助力お願いします。
よろしくお願いいたします。
【解決済】MZでセーブ画面をキャンセル不可にする方法
【解決済】MZでセーブ画面をキャンセル不可にする方法
最後に編集したユーザー おふう [ 2024年6月02日(日) 17:52 ], 累計 1 回
Re: MZでセーブ画面をキャンセル不可にする方法
「シーン制御>セーブ画面を開く」ではなく
「上級>スクリプト」から以下のコードを入力してセーブ画面を開く、とかどうでしょ
トリッキーなコードですけど
他への影響を出さずプラグイン要らずでピンポイントに要件を満たしているはず
「上級>スクリプト」から以下のコードを入力してセーブ画面を開く、とかどうでしょ
コード: 全て選択
SceneManager.push(Scene_Save);
const _temp = SceneManager._nextScene.createListWindow;
SceneManager._nextScene.createListWindow = function() {
_temp.apply(this, arguments);
this._listWindow.setHandler("cancel", null);
};
他への影響を出さずプラグイン要らずでピンポイントに要件を満たしているはず
Re: MZでセーブ画面をキャンセル不可にする方法
名無し蛙様名無し蛙 さんが書きました:「シーン制御>セーブ画面を開く」ではなく
「上級>スクリプト」から以下のコードを入力してセーブ画面を開く、とかどうでしょ
トリッキーなコードですけどコード: 全て選択
SceneManager.push(Scene_Save); const _temp = SceneManager._nextScene.createListWindow; SceneManager._nextScene.createListWindow = function() { _temp.apply(this, arguments); this._listWindow.setHandler("cancel", null); };
他への影響を出さずプラグイン要らずでピンポイントに要件を満たしているはず
早速スクリプトを試してみたところ、セーブ画面のキャンセルを不可にすることが出来ました。
この度はご教示いただきありがとうございます!
あとはセーブ画面のタッチUIのキャンセルボタンが表示されたままになるので、こちらを非表示にする方法がもしあれば、どなたかご教示いただけると幸いです。
(タッチUIをオフにしたいのではなく、押せない状態のボタンが表示されたままなのが少し気になるので、キャンセル不可のセーブ画面でのみ非表示にしたいです)
よろしくお願いいたします。
Re: MZでセーブ画面をキャンセル不可にする方法
そういえばMZにはそれがありましたね
コードの末尾にを追加してください
コードの末尾に
コード: 全て選択
SceneManager._nextScene.createCancelButton = () => {};
Re: MZでセーブ画面をキャンセル不可にする方法
名無し蛙様名無し蛙 さんが書きました:そういえばMZにはそれがありましたね
コードの末尾にを追加してくださいコード: 全て選択
SceneManager._nextScene.createCancelButton = () => {};
ご教示頂いたスクリプトを追記したところ、思い通りの挙動を実現できました。
重ね重ねになりますが、ご助力いただき誠にありがとうございました!
解決済とさせていただきます。