■数字に名前をつける
変数をわかりやすく管理する、というのはその変数を見て何のために用意された変数かすぐわかるようにすることです。
通常、変数は番号で管理されています。したがって、使う変数が少ないうちはよくても、数が増えてくるとどれがどれだかわからなくなってしまうはずです。
こんな時、
「numalias」命令(マニュアル 各種設定系 F)を使って変数に名前を付けることができます。
例えば、数字変数「%0」に「koukando_a」という名前をつけてみます。
*define
numalias koukando_a,0
game
*start
mov %koukando_a,3
mov %1,5
好感度Aは%koukando_aです。@
好感度Bは%1です。@
|
好感度Aは3です。
好感度Bは5です。
数字に比べて大変わかりやすくなっていると思います。
「numalias」という命令は数字に対して名前を付けるという命令ですから、この場合は「0」に「koukando_a」という名前を付けています。
つまり、「%koukando_a」は「%0」と同じ意味ということになり、変数に名前を付けたようになるのです。
この方法は、文字変数でも使うことができます。
■メリット
もう少しだけ、別のメリットなどについてお話しておきましょう。
・重複の可能性を排除
例えば、数字変数を0番から使っていって、スクリプト中のたくさんの箇所にその変数を書き込んでいる場合です。
0番はこの使い道、1番はこれ、2番は……とやっていくうちに、実は同じ変数を違う二つの使い道として使ってしまっていたことが判明したとしましょう。
その場合、変数がスクリプト中にたくさん書かれているうえ、どこでどっちの使い方をしているのかを一つずつ調べながら修正していかなければなりません。置換の効かない面倒な作業です。また、そういう手作業での修正中に間違いを起こしてバグを埋め込んでしまうこともありえます。
numalaisを使えば、そういった可能性を少なくすることができます。
まず、定義部にnumaliasを並べて書くことで、その部分が変数のリストになります。新しく変数を作ろう、と思ったとき、そのリストを見て新しく変数を作る(numaliasを書く)ので、重複するものをつけてしまう可能性が減ります。
また、数字ではなく英数字の文字列で名前を付けるので、そういった意味でも重複したものを使う可能性が減ります。もしnumaliasで同じ名前を付けてしまっても、NScripterを起動したときにエラーが出てすぐにわかるので安心です。
・普通変数からグローバル変数へ、またはその逆
あまり無い例かも知れませんが、例えば数字変数の0番を普通変数としてある用途に使っていたが、実は後から考えたらグローバル変数にしておかなければならないと気付いた場合です。先ほどと同じく、スクリプト中にたくさんの数字変数0番が書かれているので、これを直していくのが面倒です。
そこで、numaliasで既に名前を付けて使っていたならば、簡単にグローバル変数に直すことができます。
例えば数字変数0番に「flag」という名前を付けていたとしましょう。
これを、
このように変更するだけです。他のスクリプトには全く手をつけないで済みます。
■バグの危険
便利なnumaliasですが、やってしまいがちなパターンがあります。
以下の例を見てみてください。
全て数字変数に名前を付けていると思ってください。
...
numalias koukando_d,15
numalias koukando_e,16
numalias koukando_f,16 ←重複してつけてしまっている
numalias koukando_g,17
...
|
同じ数字に、違う名前を付けてしまっています。このような場合、当然ながらNScripterはエラーを出してくれません。なので、これをやってしまうと中々気付きにくいことになります。
こういうことをしてしまうと、例えばデバッグプレイを行っているときに、正しい選択肢を選んでいるはずなのにグッドエンディングにいけないなどの現象に遭遇し、頭を悩ませてしまうことになりかねません。
もし変数の動きがおかしいなと思ったら、まずこれを疑ってみるとよいでしょう。
修正の仕方はもうおわかりですよね。numaliasの数字をずらすだけです。
その場合、セーブに記録されている変数とは内容が異なってしまうため、一旦セーブを全て破棄した方が良いでしょう。
もし変更したものがグローバル変数ならば、グローバル変数も破棄します。グローバル変数を破棄するには、nscr.exeと同じフォルダに作成された「gloval.sav」というファイルを削除します。