Recientemente, tuve la necesidad de usar botones de forma no est谩ndar en mi proyecto. Sin embargo, esta tarea aparentemente trivial me caus贸 algunas dificultades.
El problema es que el bot贸n de interfaz de usuario est谩ndar maneja los clics incluso en 谩reas transparentes, lo que en este caso es completamente indeseable. Al mismo tiempo, el componente del bot贸n en s铆 no tiene ning煤n par谩metro (visible en el inspector) que pueda ser responsable de qu茅 谩reas del bot贸n podr铆an manejar el desplazamiento / clic.
Despu茅s de un tiempo de b煤squeda en Internet y documentaci贸n de fumar, se me ocurri贸 lo siguiente, con esta soluci贸n bastante simple:
(Dir茅 de inmediato que hay un ejemplo similar en la
documentaci贸n de Unity , pero en este momento su c贸digo ya est谩 marcado como obsoleto, as铆 que decid铆 actualizarlo y modificarlo un poco)
using UnityEngine; using UnityEngine.UI; public class ButtonClickMask : MonoBehaviour { [Range(0f, 1f)]
- Un atributo que muestra en el inspector un control deslizante conveniente con valores de 0 a 1.
- El valor m铆nimo del canal alfa que debe tener la parte de la textura sobre la que se encuentra el cursor para manejar los clics.
- El componente de imagen de un bot贸n (debe trabajar con 茅l y no con el bot贸n).
- El par谩metro alphaHitTestMinimumThreshold es exactamente cu谩l debe ser el nivel m铆nimo de transparencia para una parte de la textura para que pueda manejar el clic.
Entonces el gui贸n est谩 listo. Ahora pasemos a ajustar la textura del bot贸n. Para que el c贸digo funcione y no produzca errores, debe habilitar la capacidad de lectura / escritura en la textura Importar configuraci贸n. Recuerde aceptar los cambios haciendo clic en Aplicar.

Ahora colgamos el script en el bot贸n deseado, establecemos el Nivel Alfa en el valor deseado (en mi caso - 1) ...

... lanzamos y nos alegramos de que el bot贸n ya no maneje clics en 谩reas transparentes.
