No funcionan los botones del Canvas en Unity

Descripción del problema

Se ha crea­do un Can­vas con uno o más botones para realizar una acción, al cor­rer el juego no fun­cio­nan los botones cuan­do los pulsamos.

Esto es algo que me ha pasa­do en varias oca­siones y puede deberse a varias razones.

Vamos a asumir que tienes un GameOb­ject con el Script con la fun­ción del botón defini­da como públi­ca, lo has asig­na­do al com­po­nente But­ton del Can­vas y selec­ciona­do la fun­ción apropi­a­da. Si no has hecho esto y nece­si­tas ayu­da, te invi­to a leer este artícu­lo sobre cómo usar botones del Can­vas.

🟢 Una for­ma ráp­i­da de testear si fun­cio­nan los botones del Can­vas y cua­tro razones por las cuales los botones podrían no fun­cionar en Uni­ty y cómo solu­cionarlas
 

Posible Solución 1: No hay EventSystem

Cuan­do creamos un Can­vas automáti­ca­mente se crea un GameOb­ject lla­ma­do "EventSys­tem", como se obser­va en la figu­ra 1, este GameOb­ject tiene aso­ci­a­da algu­nas com­po­nentes que se encar­gan de mane­jar los even­tos de entrada.

Fig. 1: GameOb­ject EventSys­tem en la jerarquía.

Fig. 2: Com­po­nentes de EventSys­tem en el inspector.

Si acci­den­tal­mente elim­i­namos el GameOb­ject EventSys­tem, no se detectan las entradas del mouse y no fun­cio­nan los botones del Canvas.

Para solu­cionar esto podemos crear un segun­do Can­vas para que aparez­ca el GameOb­ject EventSys­tem y luego elim­i­nar ese segun­do Canvas.

VÍDEOS DEL CANAL CON MÁS BÚSQUEDAS

DE UNITY

DE BLENDER

Posible Solución 2: Botón configurado como no interactivo

El com­po­nente But­ton tiene un booleano para inhab­il­i­tar­lo, como se ve en la figu­ra 3 la casil­la "Inter­actable".

Fig. 3: La casil­la Inter­actable se uti­liza para desha­bil­i­tar el botón.

Posible Solución 3: Botón no es un RayCast target

El botón tiene asig­na­do un com­po­nente Image para la ima­gen de fon­do y además un com­po­nente Text para el tex­to del botón.

Ambos com­po­nentes tienen una casil­la con el nom­bre "Ray­cast Tar­get", que lo que hace es habil­i­tar el com­po­nente para que pue­da ser detec­ta­do por un traza­do de rayos, el pro­ce­so por el cual se detec­ta que se ha pul­sa­do algún ele­men­to del Canvas.

En las fig­uras 3 y 4 vemos las casil­las "Ray­cast Tar­get". En un botón si todas las casil­las Ray­cast Tar­get están des­mar­cadas, no se podrá detec­tar cuan­do se haga clic sobre esos elementos.

Fig. 4: Com­po­nente ima­gen de Canvas.

Fig. 5: Com­po­nente tex­to de Canvas

Para solu­cionar este prob­le­ma, ase­gu­rarse que al menos una casil­la Ray­cast Tar­get se encuen­tre habilitada

3 comentarios en “No funcionan los botones del Canvas en Unity”

  1. Hola, ten­go todo lo que indi­cas de man­era cor­rec­ta pero por algu­na razón hay botones que no fun­cio­nan y otros si, si hago algunos cam­bio como por ejem­p­lo: pasar los que no fun­cio­nan a un nue­vo can­vas, entonces esos empiezan a fun­cionar y los que fun­ciona­ban dejan de fun­cionar, no sabrás que puede estar pasando?

    1. mmm se me ocurre que uno de los ele­men­tos del Can­vas te está obstruyen­do a los demás, quizás es una ima­gen que cubre toda la pan­talla pero no tiene asig­na­do ningún sprite. Tam­bién podría ser un ele­men­to que está sobre dimen­sion­a­do y el área donde cap­ta el click obstruye a los ele­men­tos que están detrás. Ten­drías que revis­ar la jer­ar­quía ele­men­to por ele­men­to e ir des­mar­can­do la casil­la inter­actable en los que no lo nece­si­tan, tam­bién podrías des­mar­car Ray­Cast Target

Los comentarios están cerrados.

Scroll al inicio
Secured By miniOrange