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ánica
, ya que nosotros mismos consciente o inconscientemente tenderemos a seguir un patrón estable.
El mejor tester es un MONEKY!!
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
Ad | wp_the_query | |
---|---|---|
term_id | 0 | |
taxonomy | 0 | |
is_main_query | 1 | 1 |
is_rest_api | 0 | |
page | 0 | 1 |
numpages | 0 | 1 |
is_archive | 1 | |
is_search | 1 | |
is_home | 1 | |
is_404 | 1 | |
is_attachment | 1 | |
is_singular | 1 | 1 |
is_front_page | 1 | |
is_feed | 1 |
Find solutions in the manual
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.
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.