问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Unity 鼠标输入检测

创作时间:
作者:
@小白创作中心

Unity 鼠标输入检测

引用
CSDN
1.
https://blog.csdn.net/Richard_shen/article/details/138574311

Unity提供了多种方法来检测和处理鼠标输入,允许开发者在游戏中实现对鼠标移动、点击和滚轮滚动的响应。以下是一些基本的鼠标输入检测方法:

Input.mousePosition

这个属性返回当前鼠标指针的屏幕坐标。坐标是以像素为单位的,并且是相对于屏幕的左下角。

Vector3 mouseScreenPosition = Input.mousePosition;

Input.mouseDelta

这个属性返回自上一次布局事件以来鼠标指针移动的增量值。

Vector3 mouseDelta = Input.mouseDelta;

Input.GetMouseButton(int button)

这个方法在玩家按下指定的鼠标按钮的那一帧返回true。Unity支持的鼠标按钮编号如下:

  • 0:鼠标左键
  • 1:鼠标右键
  • 2:鼠标中键
void Update()
{
    if (Input.GetMouseButton(0))
    {
        // 玩家按下了鼠标左键
    }
}

Input.GetMouseButtonDown(int button)

与GetMouseButton类似,但GetMouseButtonDown在玩家首次按下指定的鼠标按钮时返回true。

void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        // 玩家首次按下了鼠标左键
    }
}

Input.GetMouseButtonUp(int button)

这个方法在玩家释放指定的鼠标按钮的那一帧返回true。

void Update()
{
    if (Input.GetMouseButtonUp(0))
    {
        // 玩家释放了鼠标左键
    }
}

Input.mouseScrollDelta

这个属性返回鼠标滚轮的滚动值。正值表示向上滚动,负值表示向下滚动。

void Update()
{
    float scrollDelta = Input.mouseScrollDelta.y;
    if (scrollDelta != 0)
    {
        // 玩家滚动了鼠标滚轮
    }
}

示例:鼠标点击事件处理

以下是一个简单的示例,展示了如何在Unity中处理鼠标点击事件:

using UnityEngine;

public class MouseClickExample : MonoBehaviour
{
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            // 鼠标左键被按下
            Vector3 mouseScreenPosition = Input.mousePosition;
            // 将屏幕坐标转换为世界坐标
            Vector3 mouseWorldPosition = Camera.main.ScreenToWorldPoint(mouseScreenPosition);
            // 在鼠标点击的位置生成一个物体
            GameObject newObject = Instantiate(gameObject, mouseWorldPosition, Quaternion.identity);
        }
    }
}

注意事项

  • 鼠标捕捉:在某些情况下,你可能需要使用Cursor.lockStateCursor.visible来控制鼠标指针的行为。
  • 性能:鼠标输入检测通常在Update方法中进行,因为它依赖于玩家的即时操作。
  • 多平台兼容性:确保游戏的鼠标输入系统在不同的平台上都能正常工作。
  • 玩家体验:提供可自定义的鼠标灵敏度选项,以改善玩家体验。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号