ゲーム中に会話イベントでセーブした後にコンティニューすると、イベントの続きから開始されます。
これはツクールの仕様です。
問題が起こるイベント例
◆文章:なし, なし, ウィンドウ, 下 :文章:セーブするか? ◆選択肢の表示:はい, いいえ (ウィンドウ, 右, #1, #2) :はいのとき ◆セーブ画面を開く ◆ :いいえのとき ◆ :分岐終了 ◆文章:なし, なし, ウィンドウ, 下 :文章:ゲームを続けるか? ◆選択肢の表示:はい, いいえ (ウィンドウ, 右, #1, #2) :はいのとき ◆ :いいえのとき ◆タイトル画面に戻す ◆ :分岐終了
この作りだと、コンティニューすると「ゲームを続けるか?」というメッセージから再開してしまい、プレイヤーには違和感がありますよね?
解決したイベント例
セーブ後にコンティニューした場合に、実行したくないイベントを指定する方法の一例が下記です。
◆文章:なし, なし, ウィンドウ, 下 :文章:セーブするか? ◆スクリプト:$gameTemp.goTitle = true;
◆選択肢の表示:はい, いいえ (ウィンドウ, 右, #1, #2) :はいのとき ◆セーブ画面を開く ◆ :いいえのとき ◆ :分岐終了 ◆条件分岐:スクリプト:$gameTemp.goTitle ◆文章:なし, なし, ウィンドウ, 下 :文章:ゲームを続けるか? ◆選択肢の表示:はい, いいえ (ウィンドウ, 右, #1, #2) :はいのとき ◆ :いいえのとき ◆タイトル画面に戻す ◆ :分岐終了 ◆ :分岐終了
条件分岐:スクリプト:$gameTemp.goTitle の中にイベントを収めることで、コンティニュー時には条件分岐内のイベントは実行されません。
簡単な説明
◆スクリプト:$gameTemp.goTitle = true;
RPGツクールMVの$gameTempについてのリファレンス
katai5plate.github.io/RPGMV-CoreScript-Reference/jsdoc/Game_Temp.html
$gameTempはゲーム中には保存されますが、ゲームを再開(コンティニューも)する時に初期化される変数(スイッチ)と考えると分かりやすいと思います。
上記の例では、スクリプトで
$gameTemp.goTitle = true;
等と適当な名前を付けて、利用しています。
その後の条件分岐でのスクリプトで $gameTemp.goTitle
を入れることで、ゲーム中は true
(有効)と判断され、実行されます。
しかし、コンティニュー(ニューゲームでも)すると、 $gameTemp.goTitle
は初期化され存在しないので、undefined
(未定義)のため、条件を満たしていないと判断され、実行されません。
本当にどんな名前をつけても良いのか?(突っ込みたい方向け)
コアの中で$gameTempが使われているデータは、
MVでは rpg_objects.js
MZでは rmmz_objects.js
の中の Game_Temp.prototype.initialize に書かれています。
これらは使うべきではないでしょう。
MV
$gameTemp._isPlaytest
$gameTemp._commonEventId
$gameTemp._destinationX
$gameTemp._destinationY
MZ
$gameTemp._isPlaytest
$gameTemp._destinationX
$gameTemp._destinationY
$gameTemp._touchTarget
$gameTemp._touchState
$gameTemp._needsBattleRefresh
$gameTemp._commonEventQueue
$gameTemp._animationQueue
$gameTemp._balloonQueue
$gameTemp._lastActionData
コメントを投稿するにはログインしてください。