Jorge Vallejo Blog

Blog del creativo, ilustrador y profesor de videojuegos Jorge Vallejo

Unity – Desactivar botones del Canvas

Nunca debéis subestimar la capacidad del usuario para romper el código, y es que si le dejáis que pueda por ejemplo apretar todos los botones mientras un código se esta ejecutando prodeis tener muchos problemas o hacer que el juego casque o se cierre.
Yo llegue a la conclusión de que uno de los mejores tester era la sobrina de mi novia, capaz de hacer cosas tan chungas como apretar varios botones a la vez a una velocidad increíble, ¡destruyéndolo todo!
Para ello casi siempre, lo ideal es controlar bien el nivel de interacción, siendo nosotros los que controlamos que puede hacer el usuario y en que momento puede hacerlo, por lo que activar y desactivar botones sera algo sumamente común en nuestros proyectos.

Primero tendremos que tener nuestros botones guardados en un Array, ya sea por que los hemos metido por referencia publica, es decir , hemos declarado un public Button[]Boton_array; o bien por que los cogemos de un padre Button[]Boton_array=padre.GetComponentsInChildren Acordaros de la s del GetComponentsInChildren que extrae el array de elementos del padre.
Luego simplemente recorreremos nuestro Array y lo pondremos interactable a false.
foreach (Button miboton in Boton_array) {
miboton.interactable=false;
}

También podríamos ponerlos enabled en false, la diferencia es que enabled suele llevar asociado un cambio de representación es decir, un sprite asociado a ese estado y a lo mejor no nos interesa que se vea, muchas veces desactivamos botones durante unos segundos simplemente para evitar que el usuario siga interactuando.

Finalmente donde queramos que pueda volver a usar los botones
foreach (Button miboton in Boton_array) {
miboton.interactable=true;
}

En la fase de testeo es fundamental dejar el juego a alguien que no sepa como va la mecánicamonkey_testing
, ya que nosotros mismos consciente o inconscientemente tenderemos a seguir un patrón estable.
El mejor tester es un MONEKY!!

Leave a Reply

Your email address will not be published. Required fields are marked *