Solución de problemas
¿Algo no funciona? Busca tu problema aquí abajo. Empieza por los dos primeros: son la causa de la mayoría de los casos.
Funciona en la vista previa, pero no en el editor
Es normal. El editor no ejecuta tu lógica: los scripts, los patches, la física, los temporizadores y los disparadores de proximidad están todos parados. El editor solo muestra y edita tu escena.
Es a propósito. Una animación en marcha mientras editas te estorbaría, y un temporizador cambiaría tu proyecto. Abre Preview para ver tu proyecto en acción.
Mi script no se ejecuta
Comprueba esto en orden:
- El objeto está activado, y también todos los objetos que tiene por encima en la jerarquía.
- Su escena está activa. En una escena de AR, eso significa que se ha detectado el marcador.
- El componente de script está activado.
- Estás en Preview o en un proyecto publicado, no en el editor.
Un script se reinicia cuando cambias una de sus propiedades en el inspector. Así que un cambio sin querer puede parecer un fallo.
Mi cambio vuelve atrás
Hay dos causas habituales:
- Hay un estado activo. Mientras hay un estado seleccionado, tus cambios en ese objeto se guardan en el estado. Al cambiar de estado, vuelven los valores guardados. Para cambiar el propio objeto, primero quita la selección del estado.
- Otra cosa fija ese valor en cada fotograma. Una barra de la línea de tiempo, un cuerpo físico o un componente Look At escriben continuamente en el objeto y pisan tu cambio. Consulta la siguiente sección.
Dos animaciones se pelean
Hay dos cosas cambiando el mismo objeto. La línea de tiempo escribe en cada fotograma, así que siempre gana a una transición.
Usa solo una de las dos en cada objeto. Si necesitas una transición en algo que controla la línea de tiempo, ponla en un objeto hijo o anímalo en la línea de tiempo. Consulta Animación.
Cambiar un 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. Cambia el slot:
material.update({
materials: [{ ...material.$data.materials[0], color: '#ff0000' }],
});
Lo mismo pasa con cualquier valor anidado: update sustituye lo que le pasas, así que copia los
valores que quieras conservar.
Mi objeto atraviesa el suelo
Un modelo 3D importado no es sólido hasta que le añades un colisionador. Añádele uno: una caja o una cápsula suelen bastar.
Comprueba también que el suelo tenga un cuerpo rígido y un colisionador. Una geometría sin ellos es solo decoración y las cosas la atraviesan. Consulta Física.
Un objeto con física ignora la posición que le doy
La física controla la posición de un cuerpo dinámico y la vuelve a fijar en cada paso. Para
colocar el objeto, usa teleport. Para moverlo, usa impulsos o fuerzas.
Mi UI no sale en una captura
Las tarjetas se dibujan delante de la vista 3D, y una captura de la vista 3D no las incluye. Revisa tu UI en Preview.
Los valores de rotación no coinciden
Todo lo que ves (el inspector, los puertos de los nodos de un patch) muestra grados. Los scripts leen y escriben radianes. Convierte el valor cuando lo pases de un lado a otro.
No pasa nada al pulsar la tecla
Fíjate en cómo está escrito el nombre: los disparadores llevan guiones (on-click) y los pasos,
guiones bajos (play_animation). Un nombre mal escrito no muestra ningún error. Simplemente nunca
coincide.
Si el evento usa un atajo del proyecto, comprueba que ese atajo sigue existiendo. Cuando se elimina un atajo, el evento deja de dispararse. No pasa a responder a «cualquier tecla».
Se dispara dos veces
El mismo disparador se gestiona en dos sitios: un evento y un script, o un evento y un patch. Quédate solo con uno. Consulta Eventos.
Un objeto aparece un momento tarde
Los recursos se cargan con la escena ya en marcha, así que los modelos, las texturas y el texto pueden llegar un momento después de que se abra la escena. Para el contenido que tenga que estar desde el primer fotograma, evita descargas grandes o mantén la escena oculta hasta que esté lista.
No hay un evento de «animación terminada»
Ninguna de las herramientas de animación lo tiene. Usa un paso de espera de la misma duración o lleva la cuenta del tiempo en un script.
Al deshacer se borró el cambio de otra persona
Tu historial de deshacer es solo tuyo y retrocede estrictamente en orden. No sabe si un compañero cambió el mismo objeto entre medias. En una escena compartida, corrige un error con un cambio nuevo en lugar de deshacer hasta llegar a él.
¿Sigues atascado?
Estas dos páginas son las que más probablemente tengan tu respuesta:
- Referencia: todos los ajustes, siempre al día.
- Objetos y escenas: cómo se arma un proyecto. El resto de esta sección parte de ahí.