文法

Date:

anスクリプトの文法をまとめてみました。
一度にすべてを理解する必要はありません。とりあえずは、きっちり指示しないと動かないんだな、くらいを思っていただければ。

そのまま表示される部分

この後の項で説明する以外は、すべて書き込んだことがそのままそのときの標準文字レイヤに表示されます。
ただし、tabと改行は無視されます。
ですので、インデントにはtabを利用してください。
また、改行を表示する場合には[r]という改行タグを利用します。

半角空白・全角空白はそのまま表示されます。
行末の空白文字は見失いがちで、それが変な表示の原因になることもありますので、ご注意ください。
テキストエディタにて、空白の可視化をされることをおすすめいたします。

ルビ文法

そのまま表示される部分に近いのですが、規則に従って記載することでルビとして表示されます。

《》(二重山括弧、非常に小さい or 大きいではありません)でくくった文字が直前の漢字群に対してのルビとして表示されます。直前に漢字群がない場合は直前の一文字に対して振られます。
自分でルビ対象の区切りを指定したい場合は|(全角縦棒)を指定します。
一文字ずつにルビを振りたい場合は、《》内で半角空白で区切りを入れます。

AIRNovel:

  1. AIRNovelに興味津々《きょうみしんしん》[r]
  2. AIRNovel《エアノベル》に興味津々《しんしん》[r]
  3. |AIRNovel《エアノベル》に興味|津々《しんしん》[r]
  4. |AIRNovel《エ ア ノ ベ ル》に興味津々《きょう み しん しん》
rule

他にもルビの記載方法がありますが、ひとまずはこのくらいでいいと思います。

タグ

画像を表示する、音を鳴らすなど様々な命令を記述する部分です。
[]で囲みます。
[の直後に基本的な命令(改行・音を鳴らす・クリックを待つなど)を記載します。
その後、補足命令(鳴らす音のファイル名など)を空白で区切って書き込みます。
最後に]でタグを閉じます。

補足命令は「fn=bgm1」のような形で書き込むのですが、=の右の部分に空白が含まれると、そこが区切りだと解釈されます。
ですので、空白を含みたい場合には"もしくは'で囲んで、塊であることを示す必要があります。
Adobe AIRの更新により、全角スペースも文字ではなくスペースとして認識されるようになりました。"か'で囲んでください。(2016/6/26追記)
また、計算式で値を指定することもできます。その場合は、値の指定を&で始めます。この場合、数字以外の物は変数として扱われますので、文字列として扱う場合は"もしくは'で囲みます。全体を囲んだものとは違う方を使用します。

タグの途中で改行することも可能ですので、タグが長くなって見にくい場合はうまく利用してください。

AIRNovel:

  1. [ch text=a + 2]    ;textの指定は「a」と判断されます。
  2. [ch text=a+2]    ;textの指定は「a+2」という文字列と判断されます。
  3. [ch text="a + 2"]    ;textの指定は「a + 2」という文字列と判断されます。
  4. [ch text=&a+2]    ;textの指定は「変数aに入った値に2を足したもの」と判断されます。
  5. [ch text="&'a' + 2"]    ;textの指定は「a2(文字列aに2を結合したもの)」と判断されます。
  6. [add_lay layer=bg
  7.     class=grp]    ;命令の切れ目であれば改行することが可能です。
  8. [ch text="こんにちは。
  9. お元気ですか?"]    ;""で囲むことで、指定の途中で改行することも可能です。

どのようなタグがあるかは、タグリファレンスをご覧ください。

コメント

使わなくてもゲームを作ることはできるけれど、使うと便利だよというものです。
作る側のメモ書きをスクリプトに残す時などに利用します。

;から改行するまでの部分で、ゲームには影響を与えません。
;は行頭でも、行の途中でもかまいません。

ラベル

使わなくてもゲームを作ることはできるけれど、使うと便利だよというものです。
スクリプトは基本的に上から下へ解釈していきますが、途中を飛ばしたり、戻ったりといったスクリプトを移動する場合に目印として使用します。

*から改行をするまでで、*は行頭である必要があります。
通常は、
*label
のように名前を指定します。

ラベルはあくまで目印で、移動は[jump][call]といった移動系のタグや、[link][button]という選択肢系のタグで行います。

[jump]での移動でラベル名を考えるのが面倒な場合、*を2回以上繰り返すことで、直前もしくは直後のラベルへの移動ができます。
詳しくは、タグリファレンスの[jump]の項をご覧ください。

&計算

タグでできるけれど、タグが面倒なので簡略化した変数の指定方法です。

行頭の&から改行までで、
&変数名=代入する値=cast指定
のように記載します。cast指定は未指定でもOKです。
代入する値は計算されます。
変数名も計算結果を使用したい場合は行頭に&もう一つ重ねます。
マクロ中の|での初期値指定は使用できません。

AIRNovel:

  1. &test=a + 2    ;[let name=test text="&a + 2"]
  2. &test='a' + 2    ;[let name=test text="&'a' + 2"]
  3. &test='a + 2'    ;[let name=test text="a + 2"]
  4. &test=01    ;testに代入されるのは「1」という数字
  5. &test=01=str    ;testに代入されるのは「01」という文字列
  6. &&test=a + 2    ;[let name=&test text="&a + 2"]

&表示&

タグでできるけれど、タグが面倒なので簡略化した変数の表示方法です。

&変数名&と記述することで、変数に代入されている値を表示します。
前後を改行やtabで区切って、区切りを明確にしておいた方が安全です。

AIRNovel:

  1. &test&    ;[ch text=&test]

段階: