変数・スイッチ・セルフスイッチの使い方
変数はGame_Variablesクラス、Game_Switchesクラス、セルフスイッチはGame_SelfSwitchesで定義している。それぞれ共にrmmz_objects.jsに定義。シングルトンとして使われており、変数は$gameVariables、スイッチは$gameSwitches、セルフスイッチは$gameSelfSwitchesで使用する。主に使うメソッドは値の取得がvalue(ID)、値のセットが(ID,値)となる。
変数
//変数1の値を取得
const value = $gameVariables.value(1);
//変数1に10を挿入する
$gameVariables.setValue(1, 10);
RPGツクールデフォルトは数値しか扱っていないがイベントエディターのスクリプトやプラグインでは文字列、少数、配列などどんな値でも扱える。特にスクリプトから変数に文字列を入れる手法は一般のツクール開発者でもよく使われる。

スイッチ
//スイッチ1の値を取得
const value = $gameSwitches.value(1);
//スイッチ1をOnにする。
$gameSwitches.setValue(1, true);
//スイッチ1をOffにする。
$gameSwitches.setValue(1, false);
セルフスイッチ
//マップ1のイベントID3、セルフスイッチBの値を取得
const value = $gameSelfSwitches.value([1, 3, 'B']);
//マップ1のイベントID3、セルフスイッチBをOnにする。
$gameSelfSwitches.setValue([1, 3, 'B'], true);
//マップ1のイベントID3、セルフスイッチBをOffにする。
$gameSelfSwitches.setValue([1, 3, 'B'], true);
イベントエディターのセルフスイッチの操作ではそのイベントIDのセルフスイッチしか使えないが、スクリプト上の制限はない。イベントエディターのスクリプトでも次の用途で使える。
- マップID、イベントIDを変えて別のイベントのセルフスイッチの取得・更新をする。
- デフォルトで用意されている4つ以上のセルフスイッチを取得・更新する。(’A’,’B’、’C’、’D’しか入らないが’AA’など任意に追加できる。)
- スイッチではなく、変数として利用する。(値をbool型ではなく、3, ‘aa’など他の値にする)
補足
各クラスの内部は単純な_dataの連想配列となっている。例えば変数の場合_data[1] = 2だと変数1に2が格納みたいな意味になる。
他のブログ記事などでイベントエディターのスクリプトなどで_dataを直接編集しているような書き方などを見かけるが、私の考えは「非推奨」。上述のメソッドを介して更新することを勧める。外部で変更があるクラス変数は基本的に取得・更新のメソッドやプロパティが用意されているのでそちらを使うとバグが少なくなる。変数・スイッチの場合、_dataを直接更新すると画面に反映させるためにもう一手間かかる。
関連リンク
当サイトのRPGツクールMZプラグイン開発のトップページ。他の記事へのリンクをまとめている。