Unity 切换鼠标光标图标

在 Unity 中,可以通过检测鼠标左键的按下和弹起事件来切换鼠标光标。这可以通过在 Update 方法中检查 Input.GetMouseButtonDown(0)Input.GetMouseButtonUp(0) 来实现。

以下是一个示例代码,展示如何在左键按下时切换到一个自定义光标,在左键弹起时恢复到另一个光标或默认光标:

首先,需要导入鼠标图片素材,设置导入的纹理类型为光标类型。

示例代码

csharpCopy Code
using 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);//cursorHotspot可以换为Vector2.zero
    }

    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);
    }
}

代码解析

  1. 变量定义:

    • cursorNormal: 正常状态的光标图像。
    • cursorPressed: 按下状态的光标图像。
    • cursorHotspot: 光标的热点位置。
  2. Start 方法:

    • 在游戏开始时,初始化光标为正常状态光标。
  3. Update 方法:

    • 每帧检测左键是否按下。如果按下,则切换到按下状态的光标。
    • 检测左键是否弹起,如果弹起,则恢复为正常状态的光标。
  4. OnDisable 方法:

    • 在对象禁用或销毁时,恢复默认光标,确保不会保持自定义状态。

注意事项

  • 确保在 Unity 编辑器的 Inspector 中将 cursorNormal 和 cursorPressed 设置为有效的 Texture2D 图像。
  • 可以根据需求调整光标的尺寸和热点位置,以确保其在游戏中表现良好。

这样,你就可以根据鼠标的按键状态来动态切换光标了!

posted @   多见多闻  阅读(171)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示