debuggerタグでデバッグする:Almightに触れる18
今回は、デバッグ機能を使って、以前作ったキャラクタの名前を表示させる name というマクロでどういう風に動いているかをみてみようと思います。
使用する画像や音はフリー素材を使用しています。
びたちー素材感 URL http://www.vita-chi.net/sozai1.htm
ゆんフリー者新素材集 URL http://www.yunphoto.net
以前作ったキャラクタの名前を表示させるマクロは
@macro name="name" @current layer=message1 page=fore @er @style align=center @ch text=%text @resetstyle @current layer=message0 page=fore @endmacro
これです。
こいつがどういう動きをしているかを調べてみます。
まずはいつも通りにコンソールを開いてキャラクターの名前が表示されるところまで進みます。
太字で [name] と表示されている中に
[ch] Object {_type_: "ch", text: "キャラ1", %text: "%text", &text: "&mp.text"}
と書かれている部分があります。
これは name マクロで書いた @ch text=%text の部分です。
コンソールに書かれているものをみると %text: "%text", &text: "&mp.text" となっていることを確認できました。
これは %text は &mp.text と同じ意味であることを示しています。
あまり詳しく確認していないので何とも言えませんが、この mp というものは、マクロで使う間だけ有効な変数のようです。
上記した画像を見てもらえばわかりますが、コンソールに mp.text と打ち込んでみると undefined が返ってきます。
マクロの間で %text どういうことになっているかをコンソールを使って mp の中身を確認したいので、debugger というタグを使って処理が一時停止するようにしようと思います。
では、先ほどの name マクロに @debugger というタグを組み込みます。
今回は @ch text=%text で mp.text がどういう風になっているかを確認したいので @ch text=%text の下に @debugger タグを書き加えます。
@macro name="name" @current layer=message1 page=fore @er @style align=center @ch text=%text @debugger @resetstyle @current layer=message0 page=fore @endmacro
これでゲームを起動して、先ほどと同じ箇所までゲームを進めます。
すると paused in debugger という表示がでて一時停止されます。
この状態でコンソールに先程と同様に mp.text と入力します。
mp.text に キャラ1 という文字が渡されていることが確認できました。
debugger というタグを使うと、マクロを作成してみたけども思った通りの動きをしない、なんて時に変数の確認等がしやすくなりますね。
それと、@ch text=%text を @ch text=&mp.text と書き換えてもちゃんと同じように動いていたのを確認したので、% で渡した値を if文の条件に使いたい時には幅が広がりそうですねー。
@if exp="mp.text == 'キャラ1'" hogehoge @endif
みたいな感じですかね?
正直言ってあまり複雑なマクロを作ったことがないのでどういった物に使うかは思いつきませんが。。。
あ、因みにですが、一時停止した状態を解除するには 下の画像の赤で囲ったところをクリックすれば、再びゲームが動くようになるみたいです!