ラベルについて
ラベルの書き方
NS 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]タグに行き当たらないと、問題が生じる可能性があります。
見出し
見出しを持つラベルの宣言
ラベルは、見出しを持つことができます。
ラベルの宣言の右側に半角パイプ "|" を書き、さらにその右側に文字列を記入すると、その文字列がそのラベルの見出しとなります。
*hoge|教室のシーン
上記サンプルスクリプトでは、「*label」というラベルに「教室のシーン」という見出しを持たせています。
見出しは、"|" の右に何も書かないことによって省略することが可能です。見出しが省略された場合、その直近の見出しがそのラベルの見出しとなります。
また、見出しを持つ(省略されている場合も含む)ラベルについては、ラベル名を省略することが可能です。
*hoge|教室のシーン
「教室のシーン」という見出しを持つ「*hoge」というラベルを立てました
*hoge2|
「教室のシーン」という見出しを持つ「*hoge2」というラベルを立てました
*|
「教室のシーン」という見出しを持つ、ラベル名の省略されたラベルを立てました
*hoge3
見出しを持たない「*hoge3」というラベルを立てました
*
上記サンプルスクリプトでは、2つ目および3つ目のラベル行で見出しの省略が行われています。2つ目および3つ目のラベル行の見出しは「教室のシーン」となります。
ラベル行に "|" という文字列が無い場合には、そのラベルは見出しを持たないラベルであるとみなされます。4つ目のラベル行は見出しを持たないラベルです。
見出しを持たないラベルのラベル名を省略することはできませんので、5つ目のラベル行は誤りです。
このように、「見出しが省略されている」ことと「見出しを持たない」ことは異なりますので注意してください。
見出しの役割
見出しは、セーブ機能を用いてコンテンツの状態を保存する際、そのセーブデータに付けられる名前(見出し)として利用されます。
また、セーブ機能でセーブできるデータは、見出し付きのラベルを通過した時点の情報となります。詳しくは「セーブ・ロードについて」を参照してください。