Dónde van los scripts
Puedes añadir un script a un objeto, a una escena, a un espacio o a todo el proyecto. El nivel que elijas decide cuánto tiempo funciona el script, y eso suele importar más que el propio código.
| Añadido a | Funciona mientras | Se detiene cuando |
|---|---|---|
| Un objeto | el objeto está en pantalla | se oculta, se desactiva o se borra |
| Una escena | la escena está activa | el visitante sale de la escena |
| Un espacio | el visitante está en el espacio | pasa a otro espacio |
| El proyecto | siempre, en todos los espacios | el visitante se va |
En un objeto
Es la opción por defecto. Úsala para un comportamiento que pertenece a una sola cosa: una puerta que se abre, un enemigo que persigue, un botón que reacciona.
ctx.entity es ese objeto. El script se detiene en cuanto el objeto desaparece, así que nunca
tienes que limpiar lo que deja un objeto que ya no existe.
En una escena
Añádelo en la sección Scripts de la escena. Úsalo para la lógica de toda la escena: reproducir una introducción en orden, contar cuántos objetos quedan por recoger, decidir cuándo puede pasar el visitante a lo siguiente.
Empieza cuando la escena se activa y se detiene cuando deja de estar activa. En un proyecto de AR, eso significa que empieza cuando se detecta la escena.
En un espacio
Añádelo en la sección Scripts del espacio. Un script de espacio sigue funcionando cuando cambia la escena. Úsalo para una puntuación a lo largo de tres escenas, un temporizador para toda la visita o una lógica que elige la siguiente escena.
Un toque u otro evento en un objeto también llega al script de espacio: va del objeto a la escena, y de la escena al espacio.
En el proyecto
Añádelo en los ajustes del proyecto. El script se añade a todos los espacios, así que está ahí vaya donde vaya el visitante.
Úsalo para lo que tiene que durar de un espacio al siguiente: las elecciones del visitante, el progreso general, la analítica.
Qué conserva su valor
| Guardado en | Tras cambiar de escena | Tras cambiar de espacio | Tras recargar |
|---|---|---|---|
una variable en init | solo si el script sigue funcionando | solo si el script sigue funcionando | no |
ctx.store | sí | no | no |
| una variable global | sí | sí | no |
una global @space: | sí | no: cada espacio guarda la suya, a propósito | no |
No se conserva nada: ni store ni las variables globales. Si necesitas un valor la próxima vez,
envíalo a un sitio tuyo mientras el visitante sigue en la página.
Elige un nivel
Pregúntate: ¿cuál es la cosa más pequeña de la que trata esta lógica?
- Un objeto: pon el script en el objeto.
- Esta escena: ponlo en la escena.
- Toda la visita: ponlo en el espacio. Si hay varios espacios, ponlo en el proyecto.
No lo pongas todo en el proyecto «por si acaso». Un script de proyecto no puede contar con que haya una escena concreta cargada. Se llena de comprobaciones que un script en un objeto nunca necesita.
Los patches funcionan igual
También puedes añadir un patch en cualquiera de estos niveles, y funciona durante el mismo tiempo. Un patch en el proyecto es la forma habitual de crear lógica para todo el proyecto sin escribir código.
Siguiente: La API de ctx: todo lo que un script
puede hacer con ctx.