変数について

変数を操作するには

O₂ KAG そのものには、変数を取り扱う機構がありませんので、[eval]タグを用いて JavaScript へ直接アクセスすることで変数を取り扱います。

[eval]タグは、o2_exp 属性の値に JavaScript 式を直接記述することで、その式をブラウザに実行させることができる極めて強力なタグです。

[eval]タグを用いて f.natsumi という名前の変数に "Hello, world!" という文字列を代入するには、以下のように記述します。

[eval o2_exp="f.natsumi = 'Hello, world!';"]

変数の種類

変数には、以下の種類があります。変数の種類によって、変数名の頭には決まったプレフィックス(たとえば "f." など)を付加しなければなりません。

各変数のふるまいは以下の通りです。

セーブ変数

プレフィックスは "f." です。

セーブ変数は[save]タグによってコンテンツの状態と共に保存され、[load]タグによってコンテンツの状態と共に復元される変数です。

コンテンツを再読込したり、コンテンツの最中にブラウザを閉じた場合にはセーブ変数の値は消えてしまいますが、[load]タグによってそのスロットに収められたコンテンツの状態と共に復元することができます。

内部的には、セーブ変数の情報は[save]タグを実行することによって LocalStorage 上に保存されます。

システム変数

プレフィックスは "sf." です。

システム変数に格納した値は、コンテンツを再読込したり、コンテンツの最中にブラウザを閉じた場合にも消えません。

内部的には、システム変数の情報は LocalStorage 上に保存されます。

一時変数

プレフィックスは "tf." です。

一時変数は、コンテンツの途中で値を一時的に保存したいときに使用します。

コンテンツを再読込したり、コンテンツの最中にブラウザを閉じた場合には一時変数の値は消えてしまいます。

また、[save]タグを使用してコンテンツの状態を保存する際も、一時変数の情報は保存の対象に含まれません。

マクロ変数

プレフィックスは "mp." です。

マクロ変数は読み込み専用ですので、値を代入しないでください。

マクロが実行されている間、そのマクロに渡された属性および値が格納されている変数です。

マクロ内部で、そのマクロに渡された属性および値を利用したいときに参照します。

詳しくは「マクロについて」を参照してください。

環境変数

プレフィックスは "ev." です。

環境変数は読み込み専用ですので、値を代入しないでください。

O₂ Engine によって提供されている環境変数の一覧については「環境変数リファレンス」を参照してください。

ここでは、コンテンツの再生を行っているブラウザ上にセーブデータを保管する場合について解説しています。しかし、ノベルスフィアなどのプラットフォーム上から配信される O₂ Engine コンテンツを再生する際には、セーブデータはブラウザ上ではなくプラットフォーム上のサーバに保管されます。この場合、上記の変数のうち「セーブ変数」と「システム変数」は、サーバ上に保管されます。

条件判定

条件分岐に関わるタグを使う方法

O₂ Engine コンテンツでは、条件分岐に関わるタグを利用することで、コンテンツの進行を分岐させることができます。

例えば、[if]タグは o2_exp 属性の値に JavaScript 式を記述し、その式が真でなければ次の[endif]タグの箇所まで処理を行いません。

[if o2_exp="f.stat != 0"]
この部分は、変数f.statの中身が0でない時のみ実行されます。
[endif]

条件分岐を司るタグには、[if]タグ、[else]タグ、[elsif]タグ、[endif]タグ、[ignore]タグ、[endignore]タグがあります。詳しくは「タグリファレンス」を参照してください。

o2_cond 属性を使う方法

[macro]タグ、[endmacro]タグ、[if]タグ、[else]タグ、[elsif]タグ、[endif]タグ、[ignore]タグ、[endignore]タグを除く全てのタグは、各タグ固有の属性に加え、o2_cond という属性を持っています。

この属性の値に JavaScript 式を記述すると、その式が真であるときのみそのタグが実行されます。

変数 f.stat の中身が 1 であるときのみ、red という画像を表示します。
[image storage="red" layer="base" page="fore" o2_cond="f.stat == 1"]

エンティティ

タグの属性の値に "&" から始まる文字列を指定すると、"&" に続く文字列は JavaScript 式として評価され、その値にはその評価結果が指定されたとみなされます。
この機能をエンティティといいます。

[eval o2_exp="tf.color = '0xff0000'"]
[font color=&tf.color]
この部分の文字は赤色で表示されます。