[Unity] Botones y Scripts

marod

Buenos días a todos,

Hacia tiempo que no publicaba una duda por aquí, porque en el grupo de Telegram las suelen resolver, pero ya me llaman pesao, así que me remito a publicarlas por aquí.

Hoy os traigo dos duditas frescas para que me las resolváis como buenos programadores con experiencia que sois, son dudas muy ínfimas, dos tonterías pero que no sé como estructurarlo.

La primera de ellas, es que quiero hacer 1 botón. ¿En serio no sabes hacer un botón? Pensaréis, sí... se hacer un botón, pero lo que no sé es cual es la mejor forma para su finalidad. Es decir, yo tengo un Sprite que quiero que actué como botón, que cuando el jugador le haga click pase una cosa, en este caso cambiar de pantalla.

Entonces, una de mis dudas viene siendo... ¿Utilizo los botones de Canvas que me ofrece Unity con sus pros y sus contras o directamente al Sprite le meto un collider y un OnMouseDown?

Segunda duda. Me gusta el orden y la optimización cuando puedo, y no me gusta crear 8 scripts para que el programa haga 2 cosas de mierda. Entonces, ahora mismo tengo un menú con dos botones muy simples, uno carga el juego y otro quita la aplicación. Y para ello tengo dos scripts diferentes, que hacen esas respectivas cosas, que los tengo añadidos a sus respectivos botones.

¿Es mejor añadirle al botón de salir el script de ExitScript (En teoría no sería un script unicamente para salir del juego, sino para volver también atrás a otras pantallas, es decir que duplicaria este script) para que pueda acceder al metodo que sale del juego, o me creo un GameObject Global a modo de Singleton, donde le voy añadiendo todos estos Scripts para evitar repetir su utilización?

Saludos.

YaW

Es mejor usar el Canvas para botones.

Sobre lo otro es cuestión de gustos y manias. Nosotros normalmente tenemos un solo objeto para toda la UI dividido por regiones por pantalla y todos los métodos ahí dentro. Si la UI es muy compleja tenemos un script por cada pantalla (Loading, Menú, etc) y ahí dentro todo. Hacer un script por botón me parece exageradísimo xD

1
FernandoA

#1 Usa el Canvas para los botones, con más razón si vas a usar sprites.

Un script para cada botón es una burrada, acabas consumiendo más espacio en disco del que deberías. Crea una clase (GUI o Controles, por ejemplo) y añádesela a un GameObject (la cámara o el canvas, por ejemplo). No necesitas usar el patrón Singleton para ello salvo que pretendas llamar a los eventos de esa clase desde otro lugar que no sean los botones.

1 respuesta
crazyguy

#1 Como te respondieron otros: usa la UI nativa de Unity. No tiene todo de todo, pero cubre unas necesidades básicas/intermedias razonablemente bien.

Voy a llevar la contraria a #3 ;). Prefiero intentar delimitar la funcionalidad por script. Si quieres, sería más razonable tener un script con métodos comunes a tareas de UI (volver al menú anterior, ir al menú principal, cerrar menú, etc), pero te será más útil tenerlo por separado, en caso de duda.

Sobre esto:
Segunda duda. Me gusta el orden y la optimización cuando puedo, y no me gusta crear 8 scripts para que el programa haga 2 cosas de mierda.

"Premature optimization is the root of all evil", que dijo el Sr Knuth. Y si tienes que crear 8 scripts para un par de tareas, pues los creas, no te preocupes por eso. Ya habrá tiempo para refactorizar y optimizar si hay necesidad de ello.

Usuarios habituales

  • crazyguy
  • FernandoA
  • YaW
  • marod