修改鼠标指针的默认样式,最简单的方式就是在 Unity 的项目设置中直接修改。步骤如下:
选择需要使用的图片,更改图片格式为 Cursor;

打开 Project Settings,在 Player Settings 中修改 Default Cursor 为这张图片即可。

运行游戏,鼠标就生效了。
如果想在不同状态下显示不同的光标效果,或者设置鼠标点击的热点位置,则需要通过代码进行修改:
Cursor.SetCursor(cursorTexture, Vector2.zero, CursorMode.Auto);
其中第一个参数为 Texture2D,第二个参数为鼠标热点的偏移量(距离图片左上角的偏移量)。
如果需要在指向某一 GameObject 时,鼠标指针产生不同的效果,那需要实现额外的接口代码:
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class Test· : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerUpHandler, IPointerDownHandler
{
public Button _button;
public Texture2D cursorTexture; //进入物体时的图标
//进入物体时效果
void OnMouseEnter()
{
Cursor.SetCursor(cursorTexture, Vector2.zero, CursorMode.Auto);
}
//离开物体后重置
void OnMouseExit()
{
Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto);
}
}
将此脚本挂载在被触发的物体上,同时将不同状态的图标绑定在脚本中对应的变量上即可。
如果要相应 UI 上的事件,如按钮点击,则向点击的响应事件上添加相应逻辑即可。
public class Test2 : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerUpHandler, IPointerDownHandler
{
public Button _button;
public Texture2D cursorTexture1; //聚焦时效果
public Texture2D cursorTexture2; //点按的效果
public Texture2D cursorTexture3; //点击的效果
private void Awake()
{
_button.onClick.AddListener(Cursor.SetCursor(cursorTexture3, Vector2.zero, CursorMode.Auto));
}
//鼠标聚焦时效果
public void OnPointerEnter(PointerEventData eventData)
{
Cursor.SetCursor(cursorTexture1, Vector2.zero, CursorMode.Auto);
}
//鼠标离开后重置
public void OnPointerExit(PointerEventData eventData)
{
Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto);
}
//鼠标点按效果
public void OnPointerDown(PointerEventData eventData)
{
Cursor.SetCursor(cursorTexture2, Vector2.zero, CursorMode.Auto);
}
//鼠标释放后重置
public void OnPointerUp(PointerEventData eventData)
{
Cursor.SetCursor(cursorTexture1, Vector2.zero, CursorMode.Auto);
}
}