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!!

Ad debug output

The ad is displayed on the page

current post: Unity - Desactivar botones del Canvas, ID: 2053

Ad: Anuncio2 (2573)
Placement: After Content 2 (after-content_2)

Display Conditions
general conditions
Adwp_the_query
term_id0
taxonomy0
is_main_query11
page01
numpages01
is_archive1
is_search1
is_home1
is_4041
is_attachment1
is_singular11
is_front_page1
is_feed1




Find solutions in the manual

2 comments for “Unity – Desactivar botones del Canvas

  1. anonimo
    August 2, 2017 at 5:43 pm

    Hola señor Jorge Vallejo, te escribo para ver si me podras especificar mas este asunto porque yo como un lector no le quedo muy claro lo del padre.

  2. August 4, 2017 at 10:25 am

    Los elementos que metemos en una jerarquia se denominan padres e hijos, asi el Canvas es siempre el padre de todos los elementos que contiene .
    Cuando usamos Button[]Boton_array= padre.GetComponentsInChildren Estamos diciendo quiero almacenar en un Array todos los elementos de tipo botón que tenga un elemento padr, en este caso padre seria el Canvas ya que los botones son sus hijos, lo bueno de este sistema es que no importa si hay dos botones o 20 dentro del Canvas los recogeremos todos, por que todos son “hijos” del Canvas.
    Espero que ahora te quede mas claro.
    Un Saludo.

Leave a Reply

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