在 Unity 中,可以通过检测鼠标左键的按下和弹起事件来切换鼠标光标。这可以通过在 Update
方法中检查 Input.GetMouseButtonDown(0)
和 Input.GetMouseButtonUp(0)
来实现。
以下是一个示例代码,展示如何在左键按下时切换到一个自定义光标,在左键弹起时恢复到另一个光标或默认光标:
示例代码
csharpCopy Codeusing UnityEngine;
public class CursorSwitch : MonoBehaviour
{
public Texture2D cursorNormal; // 正常状态光标
public Texture2D cursorPressed; // 按下状态光标
private Vector2 cursorHotspot;
void Start()
{
// 设置光标的热点为光标图像的中心
cursorHotspot = new Vector2(cursorNormal.width / 2, cursorNormal.height / 2);
// 设置初始光标为正常光标
Cursor.SetCursor(cursorNormal, cursorHotspot, CursorMode.Auto);
}
void Update()
{
// 检测左键按下
if (Input.GetMouseButtonDown(0))
{
// 设置为按下状态光标
Cursor.SetCursor(cursorPressed, cursorHotspot, CursorMode.Auto);
}
// 检测左键弹起
if (Input.GetMouseButtonUp(0))
{
// 恢复为正常状态光标
Cursor.SetCursor(cursorNormal, cursorHotspot, CursorMode.Auto);
}
transform.poition=Camera.main.ScreenToWorldPoint(Input.mousePosition);
}
void OnDisable()
{
// 在对象禁用时恢复默认光标
Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto);
}
}
代码解析
-
变量定义:
cursorNormal
: 正常状态的光标图像。cursorPressed
: 按下状态的光标图像。cursorHotspot
: 光标的热点位置。
-
Start
方法:- 在游戏开始时,初始化光标为正常状态光标。
-
Update
方法:- 每帧检测左键是否按下。如果按下,则切换到按下状态的光标。
- 检测左键是否弹起,如果弹起,则恢复为正常状态的光标。
-
OnDisable
方法:- 在对象禁用或销毁时,恢复默认光标,确保不会保持自定义状态。
注意事项
- 确保在 Unity 编辑器的 Inspector 中将
cursorNormal
和cursorPressed
设置为有效的Texture2D
图像。 - 可以根据需求调整光标的尺寸和热点位置,以确保其在游戏中表现良好。
这样,你就可以根据鼠标的按键状态来动态切换光标了!
标签:状态,cursorHotspot,Unity,按下,光标,cursorNormal,左键,图标 From: https://www.cnblogs.com/guangzhiruijie/p/18492142