最速JavaScript講座

コアスクリプト関数の利用

MZのコアスクリプトは、膨大な関数の集合体です。
そしてその関数はオブジェクトのプロパティというかたちで定義されています。
本項では、ついにコアスクリプトの関数の利用方法を学びます。

変数の取得

ゲーム変数の内容を取得するスクリプトは以下の通りです。
デベロッパツールで『$game』まで入力すると『$gameVariables』が候補にでてきます。

$gameVariables.value(1);

まず『$gameVariables』ですが、これはゲーム変数を扱うための『オブジェクト』でコアスクリプトで定義されています。
次に『value』ですが、これは『$gameVariables』が持つプロパティであり、関数です。
これもコアスクリプトに定義されています。
引数の『1』は変数番号です。
つまり上記スクリプトを実行すると、1番の変数の値が戻り値として返ってきます。
もし、この説明で何を言っているのか分からない部分があれば、『関数』の項目をもう一度読み直してみましょう。

グローバル変数

プログラム上のどこからでも参照できる変数のことを『グローバル変数』と呼びます。
コアスクリプトにもいくつか定義されていて、『$gameVariables』など記号『$』から始まる変数はほぼグローバル変数と思って間違いありません。 JavaScriptではトップレベル(何らかの関数ブロック内部ではない場所)で宣言した変数はグローバル変数として扱われます。
(宣言せずに使用した変数もグローバル変数になりますが、この方法でグローバル変数を使おうとするのは無関係の場所でエラーを引き起こす可能性があり非常に危険です)
$を先頭に付けているのはグローバル変数であることを明示する意味もありますが、前々作であるRPGツクールVXAce以前で使われていたRGSSに『$を先頭に付与した変数はグローバル変数になる』というルールがあったためその名残でもあります。

変数の設定

次にゲーム変数に値を設定するスクリプトについて解説します。

$gameVariables.setValue(1, 3);

『setValue』も『value』と同じく『$gameVariables』が持つ関数です。こちらは引数を二つ取ります。
最初の引数は変数番号、次の引数は設定値です。
設定のスクリプトを実行後に、再度取得のスクリプトを実行すると、設定値が反映されていることを確認できると思います。

データベースの取得

MZには膨大なデータベースがあります。
ここで入力した値はすべて『$dataXXX』というグローバル変数に格納されています。
たとえば、以下のスクリプトを実行してみましょう。

$dataActors[1].name;

すると、データベース『アクター』で登録した一番目のアクターの名前が返ってくると思います。
『$dataActors』はコアスクリプトで定義された配列の変数で、添字はデータベースのID、要素はアクターのデータベースの登録値が格納されたオブジェクトです。
ただし、添字が0の要素だけはnullが入っていますので気を付けましょう。
『name』というのは『$dataActors』の各要素であるオブジェクトが持っているプロパティのひとつで『名前』の入力値が格納されています。

他のデータベースについても同じ要領で定義されていて、以下が一覧です。

変数名 説明
$dataActors アクター
$dataClasses 職業
$dataSkills スキル
$dataItems アイテム
$dataWeapons 武器
$dataArmors 防具
$dataEnemies 敵キャラ
$dataTroops 敵グループ
$dataStates ステート
$dataAnimations アニメーション
$dataTilesets タイルセット
$dataCommonEvents コモンイベント
$dataSystem システム、用語
$dataMapInfos マップツリー情報
$dataMap マップ情報

全てのデータベースの全てのプロパティについて、この場では列挙できないので別途リファレンスを用意してあります。
リファレンスを参照すれば、データベースで入力した全ての情報を思いのままに取得できます。

RPGツクールMZ スクリプトリファレンス

はじめにご覧ください
データベース
ゲームデータ
イベントコード
特徴・効果

ゲーム中で扱われる変数は、ゲーム変数以外にもたくさんあります。
例えば、パーティメンバーのHPや持っているアイテム、敵キャラの残りHPなどです。
それらはデータベースと異なり、ゲームの進行状況によって値が変化します。
本項では便宜的にゲームオブジェクトと呼びます。
ゲームオブジェクトは『$gameXXX』という変数に格納されています。
ゲーム変数が入っていた『$gameVariables』もそのひとつです。

変数名 含まれる情報の説明 セーブデータに含まれるかどうか
$gameTemp 一時的に格納したい情報 ×
$gameSystem システム設定情報
$gameScreen 画面効果に関する情報
$gameTimer タイマーに関する情報
$gameMessage メッセージや選択肢に関する情報 ×
$gameSwitches スイッチ情報
$gameVariables 変数情報
$gameSelfSwitches セルフスイッチ情報
$gameActors 全アクターの情報
$gameParty パーティに関する情報
$gameTroop 敵グループに関する情報 ×
$gameMap マップに関する情報
$gamePlayer プレイヤーに関する情報
$testEvent イベントテストの情報 ×
DataManager データベースの読み込みを扱う関数群 ×
ConfigManager オプション設定を扱う関数群 ×
StorageManager ファイル入出力を扱う関数群 ×
FontManager フォントファイルを扱う関数群 ×
ImageManager 画像の読み込みを扱う関数群 ×
EffectManager パーティクルエフェクトを扱う関数群 ×
AudioManager BGMなどの音声の再生を扱う関数群 ×
SoundManager システム効果音を再生する関数群 ×
TextManager 用語を扱う関数群 ×
ColorManager システムカラーを扱う関数群 ×
SceneManager シーン制御を扱う関数群 ×
BattleManager 戦闘全般を扱う関数群 ×
PluginManager プラグインを扱う関数群 ×

各オブジェクトを通じて情報を取得する具体的な方法もリファレンスにまとめています。

上の表におけるゲームオブジェクトは大きく二つに分けられています。
『$gameXxx』というオブジェクトと『XxxManager』というオブジェクトです。
『$gameXxx』は、関数とデータをまとめて保持しています。
例えば『$gameParty』は、現在のパーティに関する情報を保持しているのと同時に、パーティにメンバーを追加する関数を提供しています。
一方、Managerは原則として関数のみを提供します。
表に示したとおり、用途ごとに分かれていて、画像の読み込みは『ImageManager』、音声に読み込みは『AudioManager』といった具合です。

オブジェクト指向

スクリプトに興味をもった人なら、オブジェクト指向について一度くらいは聞いたことがあると思います。
オブジェクト指向を簡潔に説明することは難しいですが、あえて言うと『$gameXxx』のように関連する『関数』と『データ』とをひとまとめにして扱うことがオブジェクト指向です。
オブジェクト指向では関数のことを『メソッド』と呼びます。
データは原則として隠されていて、メソッドを通してのみ外部から取り扱いできます。データをどのように扱うかはメソッドが決めます。
この考え方は、スクリプトを扱ううえで必ずしも知る必要はないですが、いつかプログラム設計が必要になるほど大規模なプラグインを作ろうとしているなら知っておくべき考え方です。