スクリプトを置く場所
スクリプトは、オブジェクト、シーン、スペース、プロジェクト全体のどこにでも付けられます。どの階層を選ぶかで、スクリプトが動く期間が決まります。これは、コードの中身より大事になることもよくあります。
| 付ける場所 | 動いている間 | 止まるとき |
|---|---|---|
| オブジェクト | オブジェクトが画面上にある間 | 非表示、無効、削除されたとき |
| シーン | シーンが有効な間 | 見る人がシーンを離れたとき |
| スペース | 見る人がスペースにいる間 | 別のスペースに移ったとき |
| プロジェクト | 常に。どのスペースでも | 見る人が去ったとき |
オブジェクトに付ける
これが基本の付け方です。開くドア、追いかけてくる敵、反応するボタンなど、1 つのものに属する振る舞いに使います。
ctx.entity がそのオブジェクトです。オブジェクトが止まるとスクリプトもすぐに止まるので、もう存在しないオブジェクトの後片付けをする必要はありません。
シーンに付ける
シーンの Scripts セクションで追加します。シーン全体に関わるロジックに使います。イントロを順番に再生する、集めるアイテムが残りいくつかを数える、見る人が先に進めるタイミングを決める、といった処理です。
シーンが有効になると開始し、有効でなくなると止まります。AR のプロジェクトでは、シーンが検出されたときに開始するということです。
スペースに付ける
スペースの Scripts セクションで追加します。スペースのスクリプトは、シーンが切り替わっても動き続けます。3 つのシーンにまたがるスコア、訪問全体のタイマー、次のシーンを選ぶロジックなどに使います。
オブジェクトへのタップなどのイベントも、スペースのスクリプトに届きます。イベントは、オブジェクトからシーン、シーンからスペースへと伝わっていきます。
プロジェクトに付ける
プロジェクトの設定で追加します。スクリプトはすべてのスペースに追加されるので、見る人がどこへ行っても存在します。
見る人の選択、全体の進み具合、アナリティクスなど、スペースをまたいで保つ必要があるものに使います。
値が残るもの
| 保存先 | シーンの切り替え後 | スペースの切り替え後 | 再読み込み後 |
|---|---|---|---|
init の中の変数 | スクリプトが動き続けている場合だけ | スクリプトが動き続けている場合だけ | 残らない |
ctx.store | 残る | 残らない | 残らない |
| グローバル | 残る | 残る | 残らない |
@space: のグローバル | 残る | 残らない。スペースごとに別の値を持つよう意図的にしています | 残らない |
store もグローバルも、何も残りません。次回も使いたい値があるなら、見る人がまだページにいる間に、自分で用意した保存先へ送ってください。
階層を選ぶ
このロジックが関わる、いちばん小さな単位は何かを考えてください。
- 1 つのオブジェクトなら、スクリプトをオブジェクトに付けます。
- このシーンなら、シーンに付けます。
- 訪問全体なら、スペースに付けます。スペースが複数あるなら、プロジェクトに付けます。
「念のため」に何でもプロジェクトに付けるのはやめましょう。プロジェクトのスクリプトは、特定のシーンが読み込まれていることを前提にできません。オブジェクトに付けたスクリプトなら不要なチェックで、コードがいっぱいになってしまいます。
パッチも同じです
パッチも、これらのどの階層にでも付けられ、同じ期間だけ動きます。コードを書かずにプロジェクト全体のロジックをつくるなら、プロジェクトにパッチを付けるのが一般的な方法です。
次へ: ctx API — スクリプトが ctx でできることの一覧。