Saltar al contenido principal

Patches

Los patches te permiten crear lógica con nodos y conexiones en lugar de escribir código. Usa uno cuando un evento no te baste.

Un patch está a medio camino entre los eventos y los scripts:

  • Los eventos son sencillos, pero no pueden guardar un valor ni hacer cálculos.
  • Los scripts pueden hacerlo todo, pero tienes que escribir código.

Prueba un patch la primera vez que necesites algo como «…pero solo si la puntuación pasa de diez» o «…muévelo un poco más lejos cada vez».

Un patch es tan rápido como el código

Un patch se ejecuta tan rápido como el código escrito a mano. Puedes verlo como código cuando quieras en el panel Code. Además, es la forma más rápida de comprobar que un grafo hace lo que pretendías.

Todos los nodos y sus puertos están en la referencia de nodos de patch: 203 nodos en 24 categorías.

Crear un patch​

  1. Abre el Patch editor desde la barra lateral izquierda. Muestra el grafo de la escena.
  2. Haz clic en + Add node y elige un nodo del grupo Events. Ahí empieza el grafo.
  3. Añade un nodo que haga algo, por ejemplo uno que cambie un componente.
  4. Arrastra una conexión desde la salida de pulso del nodo de evento hasta la entrada de pulso del otro nodo.
  5. Abre el panel Code para revisar tu grafo como código.

Tipos de nodo​

TipoCómo reconocerloQué hace
Eventosolo tiene salidas, y una de ellas es un pulsopone en marcha el grafo: al iniciar, al tocar, en cada fotograma
Efectoun pulso de entrada y uno de salidahace algo, en orden
Controldivide o repite el pulsoramificar, bloquear, repetir, recorrer una lista, una sola vez, esperar
Datosno tiene pulsosda un valor: un número, una suma, un campo de un componente

La conexión de pulso marca el orden en que pasan las cosas. Síguela desde un nodo de evento para leer la secuencia. Las conexiones de datos solo llevan valores. No tienen orden.

Puertos y conexiones​

Cada puerto tiene un tipo: número, booleano, texto, vector, color u objeto. Los puertos de tipos distintos no se pueden conectar. Así se detectan muchos errores antes de ejecutar nada.

Un puerto de tipo vector se despliega en x, y y z. Puedes conectar uno de ellos y escribir los otros dos.

Una entrada sin conexión usa el valor que escribiste en el nodo. Así que conecta solo lo que cambia.

Elegir qué objeto usa un nodo​

Los nodos de componente, como «get transform» o «set material», necesitan saber con qué objeto trabajar.

  • Deja el objeto vacío y el nodo usa este objeto: aquel al que está vinculado el patch.
  • Indica un objeto y el nodo trabaja con ese objeto.

Hay dos cosas que lo facilitan:

  • Los nodos get no fallan. Si lees un componente que el objeto no tiene, no obtienes nada, y el grafo sigue funcionando.
  • Los nodos set solo cambian lo que has rellenado. Todo lo demás se queda como estaba.
Los puertos de rotación van en grados

Así coinciden con todo lo que ves en el editor. Los scripts usan radianes, así que convierte el valor cuando pases una rotación de un patch a un script o al revés.

Qué hay en el menú de nodos​

GrupoQué encontrarás
Events30 puntos de inicio: inicio, fotograma, toque, teclas, colisiones, seguimiento
Componentsleer y cambiar cualquier componente
Math, Vectors, Logic, Stringscálculos, comparaciones, vectores y texto
Flowramificar, bloquear, repetir, recorrer una lista, una sola vez, esperar, secuencia
Statecontador, interruptor, temporizador, suavizado
Entities, Lifecyclebuscar, crear, generar y destruir objetos
Physicsimpulsos, fuerzas, velocidad, raycast
Multiplayerenviar, recibir, estado compartido, generar objetos
Globals, Variables, Messagingvalores compartidos con otros patches y scripts
UIleer y cambiar las variables de una tarjeta de interfaz
Functionsllamar a otro patch o a un script

Reutilizar un patch​

Guarda un grafo como patch en los recursos de tu proyecto y podrás soltarlo en otros lienzos. Lo que obtienes depende de cómo lo hayas construido:

Lo que construisteLo que obtienes
sin nodos de entrada ni de salidaun comportamiento: lo sueltas y funciona, sin conexiones
entradas, salidas y una entrada de pulsoun paso: se ejecuta cuando llega el pulso, y después sus salidas están listas
entradas y salidas, pero sin pulsouna función: sus salidas se calculan allí donde se leen

Los conectores del patch salen de los nodos de entrada y de salida que tiene dentro. Añade uno y aparecerá en todos los sitios donde se usa el patch. Cuando editas el patch, todo lo que lo usa se actualiza al momento.

Un patch de función no tiene objeto propio

Dentro de una función no existe «este objeto», así que los nodos de objetos y de componentes no funcionan ahí. Usa las funciones para datos, cálculos y lógica. Haz el trabajo con la escena en el patch que llama a la función.

Los patches también pueden llamar a scripts. Es la forma habitual de hacer algo que ningún nodo cubre.

Guardar valores entre ejecuciones​

Hay tres formas de guardar un valor. Se diferencian en quién puede verlo:

Grupo de nodosSe comparte con
Variableslos nodos de este patch
Globalstodos los patches, scripts y eventos del proyecto
Messagingquien esté escuchando, como un aviso puntual enviado por nombre

Hay dos tipos de globales:

  • las globales project conservan su valor cuando el visitante pasa de un espacio a otro;
  • las globales space empiezan de cero en cada espacio.

Los nombres de las variables, las globales y los mensajes se escriben, no se conectan.

Escribir una línea de JavaScript​

Hay dos nodos que aceptan JavaScript directamente:

  • Expression (expression) devuelve un valor.
  • Action (action) ejecuta instrucciones.

Dentro de ellos puedes usar todo lo que puede usar un script.

Úsalos para algo pequeño que ningún nodo cubra. Si ves que estás escribiendo mucho código en ellos, escribe mejor un script y llámalo desde el grafo.

Cuando algo falla​

Abre el panel Code. Si algo falla en el grafo, el problema aparece ahí. Dos causas habituales son un bucle en las conexiones de datos y un JavaScript con errores en un nodo Action.

Un patch con errores no detiene la escena. Tus otros patches siguen funcionando.


Siguiente: Controles de juego — deja que la gente se mueva por la escena.