Introducción
En este artículo vamos a ver cómo se puede hacer para cambiar la imagen que muestra el cursor al parar el puntero sobre un botón en Unity. Además se provee un paquete de descarga donde vienen los scripts, sprites y la escena con todos los elementos montados.
Paquete de Unity para descargar
🟢VÍDEO: Cómo cambiar el CURSOR al pasar el MOUSE sobre un elemento de la interfaz gráfica en Unity
Configuración del Cursor por defecto en Unity
Esto es algo que se puede hacer dentro de alguna función Start, pero si nuestro juego o aplicación tendrá un cursor con una imagen por defecto, por ejemplo una flecha personalizada, es cómodo definirlo dentro de los parámetros del proyecto, yendo a Edit > Project Settings, se despliega la ventana que se observa en la figura 3, allí podemos asignar el Sprite del cursor por defecto, así como también sus coordenadas de Hotspot.
Determinar el hotspot de un cursor personalizado en Unity
El hotspot es el offset medido desde la esquina superior izquierda del Sprite hacia el punto en donde se considera que está la punta del cursor. El script que viene en el paquete tiene campos definidos para asignar el Sprite de dos cursores así como también los vectores de sus respectivos Hotspots, como se observa en el inspector en la figura 4.
Para determinar los Hotspots hay que entrar en el modo juego e ir probando distintos valores hasta que Unity tome correctamente el cursor, otra forma sería conocer exactamente a cuántos píxeles en horizantal y vertical se encuentra la punto del cursor.
Cómo cambiar la IMAGEN del cursor en Unity
Para cambiar la imagen que muestra el cursor basta con ejecutar las instrucciones mostradas en la figura 5, en las líneas 31 y 37, el método SetCursor dentro de la clase Cursor, pasando como parámetro el sprite que queremos mostrar, el Vector2 con la posición del Hotspot y el modo de cursor. (aquí dejo un buen vídeo sobre métodos en programación y parámetros).
Cuándo cambiar el sprite del cursor en Unity
En este caso en particular nos interesa mostrar constantemente un cursor por defecto hasta que el puntero se posiciones encima de un botón, en ese momento queremos mostrar otro cursor distinto para dar feedback de que el usuario puede interactuar con ese elemento. Entonces tenemos que ser capaces de detectar exactanebte cuándo es que ocurren estos eventos y para eso a cada botón le asigno un componente tipo «Event Trigger», definiendo los eventos «On Pointer Enter» y «On Pointer Exit» que se activan cuando el cursor entra en el Target Graphic del GameObject.
A ambos eventos les asignamos el GameObject que tiene el Script con las funciones que queremos ejecutar (estas funciones deben estar definidas como públicas) y luego utilizando el menú desplegable elegimos las funciones a ejecutar en cada evento.