Saltar al contenido principal

Solución de problemas

Casi todo lo que sale mal tiene una de unas pocas causas habituales. Si algo no se comporta como esperabas, hay buenas probabilidades de que esté en esta página; empieza por arriba, las dos primeras entradas cubren la mayoría.

«Funciona en Preview pero no en el editor»

Es lo previsto. El editor no ejecuta tu lógica: ni scripts, ni patches, ni física, ni temporizadores, ni disparadores de proximidad. Dibuja la escena y te deja editarla.

Es deliberado: una animación reproduciéndose mientras trabajas te disputaría el control, y un temporizador escribiría cambios en tu proyecto. El comportamiento se comprueba en Preview.

«Mi script no arranca»

Repasa la lista:

  1. el objeto está activado, y también todo lo que tiene por encima en la jerarquía;
  2. su escena está activa — en un proyecto AR eso significa que se reconoció el marcador;
  3. el componente de script está activado;
  4. estás en Preview o en una publicación, no en el editor.

Un script también se reinicia cuando cambias cualquiera de sus ajustes en el inspector, lo que puede parecer un fallo.

«Cambio un componente y vuelve atrás»

Dos causas probables.

Hay un estado activo. Mientras haya un estado seleccionado, tus cambios se guardan en ese estado. Al cambiar de estado se restaura la instantánea. Si querías editar el objeto en sí, deselecciona el estado.

Algo es dueño de esa propiedad en cada fotograma. Una pista de la línea de tiempo, un cuerpo físico o un look-at escriben continuamente y te sobrescriben. Mira la entrada siguiente.

«Mi animación pelea con otra»

Dos mecanismos escriben en el mismo objeto. La línea de tiempo escribe cada fotograma y siempre gana a una transición.

Elige un solo mecanismo por objeto. Si necesitas una transición sobre algo que controla la línea de tiempo, muévela a un objeto hijo o anímala dentro de la línea de tiempo. → Animación

«Cambiar el material desde un script no hace nada»

Un material es una lista de slots, así que material.update({ color }) escribe un campo que no existe en ese nivel. Escribe el slot:

material.update({
materials: [{ ...material.$data.materials[0], color: '#ff0000' }],
});

Lo mismo vale para cualquier valor anidado: update sustituye lo que le pasas, así que copia lo que quieras conservar.

«Mi objeto atraviesa el suelo» / «el modelo no es sólido»

Un modelo importado no tiene forma de colisión hasta que le das un collider. Añádele uno: una caja o una cápsula sirven casi siempre.

Comprueba también el suelo: necesita un cuerpo rígido y un collider. La geometría decorativa por sí sola no detiene nada, se atraviesa. → Física

«Fijo la posición de un objeto físico y me ignora»

La física es dueña de la posición de un cuerpo dinámico y la reescribe en el siguiente paso. Usa teleport para colocarlo, e impulsos o fuerzas para moverlo.

«Mi interfaz no sale en la captura»

Las tarjetas se dibujan por delante de la vista 3D, y una captura de la vista 3D no las incluye. Comprueba la interfaz en Preview.

«Los valores de rotación no coinciden»

Donde quiera que los veas — inspector, puertos de los nodos de patch — están en grados. Los valores leídos o escritos desde un script están en radianes. Convierte en la frontera.

«Pulso la tecla y no pasa nada»

Revisa cómo está escrito: los disparadores son on-click, los pasos play_animation. Una errata no produce ningún error, simplemente nunca coincide.

Si el evento apunta a una asignación de teclas del proyecto, comprueba que sigue existiendo: una referencia a una asignación borrada no recae en «cualquier tecla», deja de dispararse.

«Se dispara dos veces»

El mismo disparador se atiende en dos sitios: en un evento y en un script, o en un evento y en un patch. Quédate con uno. → Eventos

«Mi objeto aparece con retraso»

Los recursos se cargan mientras la escena ya está en marcha, así que modelos, texturas y texto llegan poco después de abrirla. Para contenido que deba estar en el primer fotograma, no dependas de una descarga grande o mantén la escena oculta hasta que esté lista.

«No hay un evento de "animación terminada"»

No existe en ninguno de los mecanismos. Usa un paso de espera de la misma duración, o cuenta el tiempo tú mismo en un script.

«Mi deshacer borró el cambio de un compañero»

El historial de deshacer es tuyo y estrictamente lineal: no sabe que otra persona tocó el mismo objeto entretanto. En una escena compartida, corrige hacia delante en lugar de retroceder.


¿Sigues atascado?

Si nada de esto encaja, la respuesta suele estar en las tablas de referencia — cada ajuste, generado desde el motor — o en Objetos y escenas, que explica el modelo sobre el que se apoya todo lo demás.