Wo Skripte sitzen
Sie können ein Skript an ein Objekt, eine Szene, einen Raum oder das ganze Projekt hängen. Die Ebene, die Sie wählen, bestimmt, wie lange das Skript läuft. Das ist oft wichtiger als der Code.
| Angehängt an | Läuft, solange | Endet, wenn |
|---|---|---|
| ein Objekt | das Objekt im Bild ist | es ausgeblendet, deaktiviert oder gelöscht wird |
| eine Szene | die Szene aktiv ist | der Besucher die Szene verlässt |
| einen Raum | der Besucher im Raum ist | er in einen anderen Raum wechselt |
| das Projekt | immer, in jedem Raum | er das Projekt verlässt |
An einem Objekt
Das ist der Standard. Nutzen Sie es für Verhalten, das zu einem einzelnen Ding gehört: eine Tür, die aufgeht, ein Gegner, der verfolgt, ein Knopf, der reagiert.
ctx.entity ist dieses Objekt. Das Skript endet, sobald das Objekt verschwindet. Sie müssen also
nie hinter einem Objekt aufräumen, das es nicht mehr gibt.
An einer Szene
Fügen Sie es im Bereich Skripte der Szene hinzu. Nutzen Sie es für Logik, die die ganze Szene betrifft: ein Intro in der richtigen Reihenfolge abspielen, zählen, wie viele Sammelobjekte übrig sind, entscheiden, wann der Besucher weiter darf.
Es startet, wenn die Szene aktiv wird, und endet, wenn sie nicht mehr aktiv ist. In einem AR-Projekt heißt das: Es startet, wenn die Szene erkannt wird.
An einem Raum
Fügen Sie es im Bereich Skripte des Raums hinzu. Ein Raum-Skript läuft weiter, wenn die Szene wechselt. Nutzen Sie es für einen Punktestand über drei Szenen, einen Timer für den ganzen Besuch oder Logik, die die nächste Szene auswählt.
Ein Tap oder ein anderes Ereignis an einem Objekt erreicht auch das Raum-Skript: Es wandert vom Objekt zur Szene und dann zum Raum.
Am Projekt
Fügen Sie es in den Projekteinstellungen hinzu. Das Skript wird jedem Raum hinzugefügt. Es ist also überall dabei, wohin der Besucher auch geht.
Nutzen Sie es für Dinge, die von einem Raum zum nächsten erhalten bleiben müssen: die Entscheidungen des Besuchers, den Gesamtfortschritt, Analytics.
Was seinen Wert behält
| Gespeichert in | Nach einem Szenenwechsel | Nach einem Raumwechsel | Nach dem Neuladen |
|---|---|---|---|
einer Variablen in init | nur, wenn das Skript noch läuft | nur, wenn das Skript noch läuft | nein |
ctx.store | ja | nein | nein |
| einem globalen Wert | ja | ja | nein |
einem globalen @space:-Wert | ja | nein — jeder Raum hat absichtlich seinen eigenen | nein |
Nichts bleibt erhalten: weder store noch globale Werte. Wenn Sie einen Wert beim nächsten Mal
brauchen, schicken Sie ihn an einen eigenen Speicherort, solange der Besucher noch auf der Seite
ist.
Eine Ebene wählen
Fragen Sie sich: Was ist das Kleinste, worum es bei dieser Logik geht?
- Ein Objekt — legen Sie das Skript auf das Objekt.
- Diese Szene — legen Sie es auf die Szene.
- Der ganze Besuch — legen Sie es auf den Raum. Gibt es mehrere Räume, legen Sie es auf das Projekt.
Legen Sie nicht alles „für alle Fälle“ auf das Projekt. Ein Projekt-Skript kann sich nicht darauf verlassen, dass eine bestimmte Szene geladen ist. Es füllt sich mit Prüfungen, die ein Skript an einem Objekt nie braucht.
Patches funktionieren genauso
Auch einen Patch können Sie an jede dieser Ebenen hängen, und er läuft genauso lange. Ein Patch am Projekt ist der übliche Weg, Logik für das ganze Projekt ohne Code zu bauen.
Weiter: Die ctx-API — alles, was ein Skript mit
ctx tun kann.