No funcionan los botones del Canvas en Unity

Descripción del problema

Se ha creado un Canvas con uno o más botones para realizar una acción, al correr el juego no funcionan los botones cuando los pulsamos.

Esto es algo que me ha pasado en varias ocasiones y puede deberse a varias razones.

Vamos a asumir que tienes un GameObject con el Script con la función del botón definida como pública, lo has asignado al componente Button del Canvas y seleccionado la función apropiada. Si no has hecho esto y necesitas ayuda, te invito a leer este artículo sobre cómo usar botones del Canvas.

Posible Solución 1: No hay EventSystem

Cuando creamos un Canvas automáticamente se crea un GameObject llamado “EventSystem”, como se observa en la figura 1, este GameObject tiene asociada algunas componentes que se encargan de manejar los eventos de entrada.

Fig. 1: GameObject EventSystem en la jerarquía.

Fig. 2: Componentes de EventSystem en el inspector.

Si accidentalmente eliminamos el GameObject EventSystem, no se detectan las entradas del mouse y no funcionan los botones del Canvas.

Para solucionar esto podemos crear un segundo Canvas para que aparezca el GameObject EventSystem y luego eliminar el segundo Canvas.

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

El componente Button tiene un booleano para inhabilitarlo, como se ve en la figura 3 la casilla “Interactable”.

Fig. 3: La casilla Interactable se utiliza para deshabilitar el botón.

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

El botón tiene asignado un componente Image para la imagen de fondo y además un componente Text para el texto del botón.

Ambos componentes tienen una casilla con el nombre “Raycast Target”, que lo que hace es habilitar el componente para que pueda ser detectado por un trazado de rayos, el proceso por el cual se detecta que se ha pulsado algún elemento del Canvas.

En las figuras 3 y 4 vemos las casillas “Raycast Target”. En un botón si todas las casillas Raycast Target están desmarcadas, no se podrá detectar cuando se haga clic sobre esos elementos.

Fig. 4: Componente imagen de Canvas.

Fig. 5: Componente texto de Canvas

Para solucionar este problema, asegurarse que al menos una casilla Raycast Target se encuentre habilitada.

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

  1. Hola, tengo todo lo que indicas de manera correcta pero por alguna razón hay botones que no funcionan y otros si, si hago algunos cambio como por ejemplo: pasar los que no funcionan a un nuevo canvas, entonces esos empiezan a funcionar y los que funcionaban dejan de funcionar, no sabrás que puede estar pasando?

    1. mmm se me ocurre que uno de los elementos del Canvas te está obstruyendo a los demás, quizás es una imagen que cubre toda la pantalla pero no tiene asignado ningún sprite. También podría ser un elemento que está sobre dimensionado y el área donde capta el click obstruye a los elementos que están detrás. Tendrías que revisar la jerarquía elemento por elemento e ir desmarcando la casilla interactable en los que no lo necesitan, también podrías desmarcar RayCast Target

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *