【ウディタ】X番の変数呼出ってなに?丁寧に解説

2019-12-26ウディタ機能解説

ウディタを使ってるときに、いつも何気なく見てるけど……これ、どうやって使うの?
今回はX番の変数呼出について、詳しく解説します。

前置き:変数について

これを読んでいる方は、ウディタの変数機能についてある程度理解している方がほとんどでしょう。にもかかわらず変数の解説を設けるのは、今回は「変数」にあるイメージを持っていただいた上で話を進めたいからです。

さて、変数はよく『数値や文字列を入れる箱』に例えられることを知っていますか?

あえてウディタの変数で説明するならば、コモンセルフ変数10番の変数に数値5を代入する場合は、コモンセルフ変数10番の箱数値5を格納するイメージを持つことができるというわけです。

わざわざ箱のイメージを用いて説明するのには理由があります。
というのも、これからお話しする内容は『変数=箱』というイメージを持っていただいた方がすんなり理解しやすいからです。

ですから、ここからは『変数=箱』であるという認識で話を進めさせていただきますね。

X番の変数呼出とは何か?

ウディタでは、変数に「あること」をすると、変数の中に変数が入った状態……図式化すれば『箱の中にさらに箱が入った状態』を作り出すことができます。※「あること」は後に説明します。

X番の変数呼出は、この『箱の中に入っている箱』を呼び出すことができる機能なのです。

呼び出したらどんなことができる?

普通の変数と同じく、代入や計算に使うことができます。

数値を代入したり……。

他の変数に、格納された数値を代入することもできます。

まずは箱の中に箱を入れよう

X番の変数呼出を使うにはまず、先ほど紹介したような『箱が入っている箱』、つまり『中に変数が格納されている変数』を作る必要があります。

早速、コモンイベントにプログラムを書いていきます。
使用する変数はコモンセルフ変数10番、11番です。

今回はコモンセルフ変数10番にコモンセルフ変数11番を格納してみましょう。

※変数の名前は自由につけてください。

ここまでの全コード

■変数操作: CSelf10[箱(大)] = 1600011 + 0

ちなみに青枠の部分を数値でなく変数指定にした場合にも、同じコードを入力することができます。

これでコモンセルフ変数10番の箱に、コモンセルフ変数11番の箱を入れることができました。

変数呼び出し値について

ところで、右辺に入力してある"1600011″の意味は分かりますか?(分かる方は飛ばしてOK)

この"1600011″という数字、ウディタではコモンセルフ変数11番を指すのです。

これは『変数呼び出し値』と呼ばれるものです。100万以上の数値をルールに従って入力すれば、普通は数字を入力する欄からでも変数を呼び出せるスグレモノなのです。

今回出てきた数字・"1600011″も、この変数呼出し値のルールに従って入力されています。ちなみにこの変数呼び出し値のルールは、メニューバーの ヘルプ>変数呼び出し値/特殊文字一覧 で見ることができます。

※一見、変数操作からコモンセルフ変数を呼び出せるので不要な機能だと思いがちですが……自作コモン制作の際に使用することがあります。

『データを呼ばない』に必ずチェックを入れよう

これにチェックを入れないと、コモンセルフ変数10番にコモンセルフ変数11番のを代入する式になってしまいます。これだと変数の中に変数を入れる作業ができません。

これはNG!

▼チェックを入れないとこのようなコードになる
■変数操作: CSelf10[箱(大)] = CSelf11[箱(小)] + 0

『データを呼ばない』について軽く説明

ここでいう『データ』とは、変数に格納されている数値や文字列のことです。

先ほど、『変数呼び出し値』のルールに従って100万以上の数値を入力すれば、数値=変数(またはDB)となる機能があると説明しました。

じゃあ、もし100万以上の数値をウディタで使いたくなったら?
そういった場合は『データを呼ばない』にチェックをいれることで、100以上の数値をただの『数値』として扱うことができるようになります。

数値を代入してみよう

では、さきほど作った『箱の中に入っている箱』に数値を代入してみましょう。

この図でいえば、大きい箱がコモンセルフ変数10番、小さい箱がコモンセルフ変数11番の変数を指します。


今回は図と同じように、小さい箱(コモンセルフ変数11番)にX番の変数呼出を使って数値5を格納します。

ここまでの全コード

■変数操作: CSelf10[箱(大)] = 1600011 + 0
▼ 追加したコード
■変数操作: V[CSelf10[箱(大)]] = 5 + 0

つまり、先ほどコモンセルフ変数10番に代入した「1600011(コモンセルフ変数11番)」がX番の変数呼出で呼ばれ、そこに数値5が代入されるのという仕組みです。

POINT

※ここでコモンセルフ変数10番に格納されている1600011は、データを呼ばないにチェックを入れていないため変数として扱われます。

……本当に数値が代入されたのだろうか? と気になる方もいらっしゃるかもしれません。

では、検証してみましょう。
以下のコードを一番最後の行に足し、マップイベントでこのコモンを呼び出してみます。

追記

■文章:コモンセルフ10番(箱大)は「\cself[10]」で、\nコモンセルフ11番(箱小)は「\cself[11]」です。

しっかりと代入されていますね。

X番の変数呼出によって、コモンセルフ変数10番に格納されているコモンセルフ変数11番に数値5を代入することができました。

他の変数に代入してみよう

ここまでの全コード

■変数操作: CSelf10[箱(大)] = 1600011 + 0
■変数操作: V[CSelf10[箱(大)]] = 5 + 0
▼ 追加したコード
■変数操作: CSelf30 = V[CSelf10[箱(大)]] + 0

これも検証してみましょう。

追記

■文章:コモンセルフ30番は「\cself[30]」です。

ちゃんと代入されました。

活用例

で、これって何に使うの? と思われた方もいらっしゃるでしょう。

ぶっちゃけこのX番の変数呼出、必ずしもゲーム制作において必須な機能ではありません。ぶっちゃけこの機能を使わずに同じコードを書くことも可能だと思います。

ですが知っておくと僅かながらでも役に立ちます。

この機能で私が感じた魅力はコードを短くできる点です。
このことについては近々解説する予定ですので、お待ちくださいませ。

2019/12/26 こちらの記事で使用例を紹介しておりますので、よければどうぞ。

おまけ

箱の中に箱を入れて……を繰り返すとマトリョシカみたいな構造になるのでは? と思い試してみました。(ごちゃごちゃするのでおすすめしません)

■変数操作: CSelf10 = 1600011 + 0 
■変数操作: V[CSelf10] = 1600012 + 0 
■変数操作: V[CSelf11] = 1600013 + 0 
■変数操作: V[CSelf12] = 1600014 + 0 
■変数操作: V[CSelf13] = 1600015 + 0 
■変数操作: V[CSelf14] = 1 + 0 
■文章:Cself10=\cself[10],Cself11=\cself[11],\nCself12=\cself[12],Cself13=\cself[13],\nCself14=\cself[14],Cself15=\cself[15],

上手くいくみたいですね(笑)

ここまで読んでくださった皆様、お疲れさまでした。
少しでもこの機能について理解が深まってくださったのなら幸いです。

ではでは、お付き合いいただきありがとうございました(^_^)/~