ラベルについて

ラベルの書き方

O₂ KAG では、"*" から始まる行はラベルとみなされます。

ラベルを立てておくことで、[jump]タグや[call]タグといったタグを使ってその箇所へと移動することができます。また[button]タグなどで移動先を指定する時にも使用します。

*labelName1

上記のスクリプトでは、「*labelName1」という名前のラベルを宣言したことになります。

この場合、ラベル名は「labelName1」ではなく「*labelName1」です。つまり、"*" もラベル名の一部であることに注意してください。

1つのシナリオファイル内に、同じ名前のラベルを2つ以上立てることはできません。

ラベルへのジャンプ

ラベルを立てると、その行へとコンテンツの再生を移動させることができますが、この移動にはジャンプサブルーチンジャンプの2種類があります。

ジャンプ

ジャンプは、コンテンツの再生を特定の行へ移動することを指します。

ジャンプは[jump]タグを用いて実現します。シナリオファイル中の特定のラベルへジャンプするには target 属性でジャンプ先のラベル名を指定します。また、別のシナリオファイルの冒頭へジャンプするには、storage 属性でシナリオファイル名を指定します。target 属性と storage 属性を併用し、別のシナリオファイル中の特定のラベルへとジャンプすることもできます。

; 同一シナリオファイル中の「*test」ラベルへとジャンプするタグ
[jump target="*test"]
; シナリオファイル「hoge.ks」の冒頭へとジャンプするタグ
[jump storage="hoge.ks"]
; シナリオファイル「hoge.ks」の中にある「*test」ラベルへとジャンプするタグ
[jump storage="hoge.ks" target="*test"]

サブルーチンジャンプ

サブルーチンジャンプは、コンテンツの再生を特定の行へ移動することを指します。元の場所へ戻ってくることを考慮しない通常のジャンプと異なり、サブルーチンジャンプは「ジャンプ元の行へ戻ってくること」を前提としたジャンプです。

サブルーチンジャンプは[call]タグを用いて実現します。target 属性と storage 属性の使い方は[jump]タグと同じです。ジャンプ先のシナリオ再生中、[return]タグに行き当たると、ジャンプ元の[call]タグの場所にコンテンツの再生が戻されます。

これからサブルーチンジャンプします。[l][r]
[call target=*test]
元の場所に戻りました。[s]
*test
サブルーチンジャンプしました。[l][r]
これから元の場所へ戻ります。[l][r]
[return]

たとえば、上記サンプルスクリプトを実行すると、「これからサブルーチンジャンプします。」→「サブルーチンジャンプしました。」→「これから元の場所へ戻ります。」→「元の場所に戻りました。」の順にテキストが表示されます。

サブルーチンジャンプを通常のジャンプのように使ってはいけません。小規模なシナリオでは一見うまく動作するように見えますが、サブルーチンジャンプしたにも関わらずいつまで経っても[return]タグに行き当たらないと、問題が生じる可能性があります。