今回はウディタの変数に関する話です。知っている人には当たり前の内容ですが、私もたまにこんがらがったりするので備忘録も兼ねてまとめておきます。
ウディタの変数の種類と違い
ウディタには大きく分けて次の3種類の変数があります(※実際はもう1つありますが割愛)。
- イベントセルフ変数
- コモンイベントセルフ変数
- 通常変数・予備変数
これらは名前が似ていたりしてややこしい部分もあるのですが、はっきりとした違いがありますので下記にそれぞれの特徴を書いておきます。
イベントセルフ変数
各イベントが持つ10個の変数です。単に「セルフ変数」とも呼ばれます。イベント自身から操作することが可能なほか、同じマップ内の他のイベントから操作することも可能です(逆に言うと別のマップからは操作できない)。
このセルフ変数の値はセーブデータに保存されるので、例えば「一度開けたら空っぽになる宝箱」などを実現するのによく使います。ただし、変数名をつけることができないので管理が少し面倒です。
コモンイベントセルフ変数
各コモンイベントが持つ100個の変数です(そのうち5個は文字列変数)。この変数はそのコモンイベント内のみで操作できます。
コモンイベントセルフ変数の値はコモンイベントが終了すると捨てられるため、値を保存することはできません。値を保存したいときは別途通常変数や可変データベースに書き込むなどします。
この変数は1つ1つに自由に名前を付けられるため、変数が複雑に入り乱れるようなコマンド文でもある程度分かりやすくすることができます。
通常変数・予備変数
ゲーム内から自由に操作できる変数です。最大10000個まで用意することができ、どのマップやコモンからでも操作できます。また、自由に名前を付けることが可能です。
通常変数は基本的にはイベントセルフやコモンセルフで実現できない用途に使います。例えばシナリオのフラグ管理に使ったり、イベント並列実行のトリガーにしたりすることが多いです。また、この変数の値はセーブデータに保存されます。
予備変数は通常変数と同じものですが、何か特別な理由があって通常変数から切り離した変数を使いたいときに使用します。しかし、普通はほとんど使う機会はないと思います。
変数の値の受け渡しについて
※2018年4月8日追記:
下記の内容では「イベントセルフ変数⇔コモンイベントセルフ変数の操作は直接できない」としていますが、変数操作コマンドを使えば操作自体は可能なようです。「コモンイベントからイベントセルフ変数を操作する」という記事を書いたので、そちらも参照してください。
変数を操作する側によっては特定の変数を直接操作できないことがあります。イベントやコモンイベントから操作できる変数の対応表は次の通りです。
操作対象\操作側 | イベント | コモンイベント |
イベントセルフ変数 | 可能 | 不可能 |
コモンイベントセルフ変数 | 不可能 | 可能 |
通常変数 | 可能 | 可能 |
この表から分かることは、イベントセルフ変数⇔コモンイベントセルフ変数の操作は直接できないということです。したがって、どうしてもこの操作を行いたい場合はコモンイベント側の「コモンイベント入力(引数)」とその「結果(戻り値)」を利用する必要があります。
コモンイベント入力
プログラミングで言うところの「引数」です。ここには変数呼び出し値を使うことができるため、例えばイベントからコモンイベントを呼び出すときにここにイベントセルフ変数を入れることができます。
コモンイベントの結果
プログラミングで言うところの「戻り値」です。コモンイベントが終了したとき、コモンイベントセルフ変数の値を一つだけ呼び出し元に返すことができます。したがって、コモンイベントセルフ変数の値をイベントセルフ変数に代入したいときはこれを利用します。