Jump to content

Archived

This topic is now archived and is closed to further replies.

BlackBloodGC

While congela Unity

Recommended Posts

Hola buenas, resulta que estoy intentando hacer un juego que se ejecute hasta que ganar == false. Cuando voy a ejecutarlo y ganar == true unity se me congela. Yo creo que el código esta bien, además es extraño porque se congela incluso antes de empezar a ejecutar código. Por mi ordenador no es, i7-6700k y r9 fury.

Aquí el código: https://pastebin.com/XNN9peR0

Share this post


Link to post
Share on other sites

Si se congela unity, entonces no esta bien, y no esta bien precisamente porque estas intentando hacer que funcione en el metodo Start, por lo tanto jamas de los jamases funcionara correctamente.
Puedes consultar la documentacion de los metodos propios del Monobehaviour en la documentacion de la API de unity

¡¡Un saludo!!

Share this post


Link to post
Share on other sites

En mi experiencia, un consejo: Olvidaros del While para Unity3D.  Ese tipo de bucles siempre ha dado problemas, y más aún programando videojuegos. 

Share this post


Link to post
Share on other sites

Todos y cada uno de los bloques de codigo son herramientas de la programacion, su funcionalidad radica en el conocimiento y aplicacion de dichas herramientas, por lo tanto, ahi estan, pero hay que saber utilizarlas correctamente. No se puede decir que algo no funciona por los inconvenientes que se producen de su incorrecta aplicacion.

Share this post


Link to post
Share on other sites
3 hours ago, Chaskarron said:

Si se congela unity, entonces no esta bien, y no esta bien precisamente porque estas intentando hacer que funcione en el metodo Start, por lo tanto jamas de los jamases funcionara correctamente.
Puedes consultar la documentacion de los metodos propios del Monobehaviour en la documentacion de la API de unity

¡¡Un saludo!!

Gracias. He estado mirando y tendría que usar el método OnEnable()? Y si no es este  cual debería usar? 

Share this post


Link to post
Share on other sites
1 minute ago, BlackBloodGC said:

Gracias. He estado mirando y tendría que usar el método OnEnable()? Y si no es este  cual debería usar? 

OnEnable es para cuando el GameObject se activa en la jerarquia de la escena y comienza a estar activo, que funciona indistintamente en el editor y en la compilacion. Por otro lado, y el cual seria mas factible de usar, seria el metodo Update, que se llama cada frame de la aplicacion, pero tenemos el dilema que mientras exista un bucle en dicho metodo, unity quedara congelado mientras el bucle no se rompa. Quedaria la opcion de usar una corrutina o agregar un "listener" a cada boton con la funcion a ejecutar en caso de ser pulsado.
Te recomiendo intentar algo mas sencillo antes de abarcar temas complejos sin conocer un minimo las librerias del engine. ¡¡Saludos!!

Share this post


Link to post
Share on other sites

Al final, después de unas 6 horas totales he conseguido que funcione, lo he optimizado y está totalmente terminado y sin bucle while. Era usarlo y congelarse unity. He aprendido mucho, gracias a todos

Share this post


Link to post
Share on other sites

Unity funciona frame a frame, no es la consola de C, tenés que asegurar que el flujo del programa salga del Update, si por cualquier razon se queda dando vueltas dentro de un update nunca se dará la orden de rendering, ni la de actualizacion de animators, ni la de captura de inputs... basicamente rompés el flujo del Engine. En corrutinas lo podés hacer, ya que te obligan a meter un yield justamente para delegar este control de flujo y retomarlo cuando corresponda, por ej yield return new WaitForSeconds(t) vuelve a los t segundos.

Resumen : tené cuidado con los while, usalos si y solo si sabés que vas a salir, y si además el efecto pasa en un frame (hablando del update).

 

Saludos

Share this post


Link to post
Share on other sites

si la lógica está mal da igual que bucle uses el problema radica en que si no entiendes lo que va a pasar el while es mas fácil que genere bucle infinito que con un for

Share this post


Link to post
Share on other sites

×
×
  • Create New...