Unity 之 Input类

文章目录

总述

Input 类是 Unity 中用于处理用户输入的重要工具,它允许您获取来自键盘、鼠标、触摸屏和控制器等设备的输入数据。通过 Input 类,您可以轻松地检测按键、鼠标点击、鼠标移动、触摸、控制器按钮等用户输入事件。以下是关于 Input 类的详细介绍:

  1. 按键输入: 您可以使用 Input.GetKey(KeyCode key) 方法来检测是否按下了指定的键。例如,Input.GetKey(KeyCode.W) 可以用来检测玩家是否按下了"W"键。

  2. 鼠标点击: 使用 Input.GetMouseButtonDown(int button) 方法可以检测鼠标按下事件。button 参数用于指定鼠标按钮,0表示左键,1表示右键,2表示中键。

  3. 鼠标移动: 通过 Input.GetAxis("Mouse X") 和 Input.GetAxis("Mouse Y") 可以获取鼠标在水平和垂直方向上的移动距离。

  4. 触摸输入: 对于移动设备,您可以使用 Input.touches 数组来获取当前的触摸事件。每个触摸事件都包含有关触摸位置、状态和标识符的信息。

  5. 控制器输入: 对于游戏控制器,您可以使用类似于按键输入的方法来检测按钮是否被按下,如 Input.GetButtonDown(string buttonName)。

  6. 轴输入: 除了按键和按钮,您还可以检测轴的输入,如控制器的摇杆。使用 Input.GetAxis(string axisName) 可以获取轴的值。

  7. 按键释放: 您可以使用 Input.GetKeyUp(KeyCode key) 方法来检测按键是否释放。

  8. 虚拟轴和按钮: 在 Unity 中,您还可以设置虚拟轴和虚拟按钮,这些虚拟输入可以模拟实际输入设备,使得代码更具有可移植性。

具体介绍

以下是关于 Input 类中每个要点的详细代码示例和解释:

  1. 按键输入:
csharp 复制代码
using UnityEngine;

public class InputExample : MonoBehaviour
{
    void Update()
    {
        if (Input.GetKey(KeyCode.W))
        {
            Debug.Log("W键被按下!");
        }
    }
}

在这个示例中,Input.GetKey(KeyCode.W) 方法用于检测是否按下了"W"键。如果按下了"W"键,将输出一条日志信息。

  1. 鼠标点击:
csharp 复制代码
using UnityEngine;

public class InputExample : MonoBehaviour
{
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Debug.Log("鼠标左键被按下!");
        }
    }
}

在这个示例中,Input.GetMouseButtonDown(0) 方法用于检测鼠标左键是否被按下。如果鼠标左键被按下,将输出一条日志信息。

  1. 鼠标移动:
csharp 复制代码
using UnityEngine;

public class InputExample : MonoBehaviour
{
    void Update()
    {
        float mouseX = Input.GetAxis("Mouse X");
        float mouseY = Input.GetAxis("Mouse Y");
        
        Debug.Log("鼠标X轴移动:" + mouseX);
        Debug.Log("鼠标Y轴移动:" + mouseY);
    }
}

在这个示例中,Input.GetAxis("Mouse X") 和 Input.GetAxis("Mouse Y") 方法用于获取鼠标在水平和垂直方向上的移动距离。如果鼠标水平移动,将输出相应的鼠标移动信息。

  1. 触摸输入:
csharp 复制代码
using UnityEngine;

public class InputExample : MonoBehaviour
{
    void Update()
    {
        if (Input.touchCount > 0)
        {
            Touch touch = Input.GetTouch(0);
            Debug.Log("触摸位置:" + touch.position);
        }
    }
}

在这个示例中,Input.touchCount 用于获取当前触摸事件的数量。如果有触摸事件,Input.GetTouch(0) 方法将返回第一个触摸事件的信息,包括位置等。

  1. 控制器输入:
csharp 复制代码
using UnityEngine;

public class InputExample : MonoBehaviour
{
    void Update()
    {
        if (Input.GetButtonDown("Jump"))
        {
            Debug.Log("跳跃按钮被按下!");
        }
    }
}

在这个示例中,Input.GetButtonDown("Jump") 方法用于检测控制器上的"Jump"按钮是否被按下。如果按钮被按下,将输出一条日志信息。

  1. 轴输入:
csharp 复制代码
using UnityEngine;

public class InputExample : MonoBehaviour
{
    void Update()
    {
        float horizontalInput = Input.GetAxis("Horizontal");
        float verticalInput = Input.GetAxis("Vertical");
        
        Debug.Log("水平输入:" + horizontalInput);
        Debug.Log("垂直输入:" + verticalInput);
    }
}

在这个示例中,Input.GetAxis("Horizontal") 和 Input.GetAxis("Vertical") 方法用于获取水平和垂直方向上的轴输入值。如果玩家在控制器或键盘上移动,将输出相应的输入值。

  1. 按键释放:
csharp 复制代码
using UnityEngine;

public class InputExample : MonoBehaviour
{
    void Update()
    {
        if (Input.GetKeyUp(KeyCode.W))
        {
            Debug.Log("W键被释放!");
        }
    }
}

在这个示例中,Input.GetKeyUp(KeyCode.W) 方法用于检测"W"键是否被释放。如果"W"键被释放,将输出一条日志信息。

  1. 虚拟轴和按钮:

在 Unity 编辑器中设置虚拟轴和按钮,然后可以使用类似于上述的方法来获取虚拟输入。

总之,这些代码示例演示了如何使用 Input 类来处理用户输入,从键盘、鼠标、触摸屏到控制器等不同设备的输入事件。通过这些方法,您可以实现丰富的游戏逻辑和交互。

相关推荐
阿松爱学习17 小时前
【Unity开发】监听Scene场景事件
unity·c#
xiaogai_gai1 天前
BOM 物料清单同步实战:金蝶云星空 → 四化智造 MES 修改场景深度拆解
unity·游戏引擎
淡海水1 天前
03-03-架构篇-SGen GC架构解析
unity·架构·c#·gc·sgen
/**书香门第*/1 天前
Cocos Creator 打螺丝游戏的实现
游戏引擎·cocos2d·螺丝·打螺丝
萌萌的提莫队长2 天前
Unity相机捕捉,图像识别,抠像+合成
opencv·unity
mxwin3 天前
Unity Shader 光线追踪原理与实战案例
unity·游戏引擎
地狱为王3 天前
Unity使用DPDFNet实现实时语音增强(降噪)
unity·语音增强·降噪·dpdfnet
平行云PVT3 天前
国产信创实时云渲染解决方案:如何实现数字孪生与三维应用云化部署?
unity·webrtc·unreal engine·实时云渲染·国产信创·摩尔线程·砺算科技
夏炎黄3 天前
Terrain地形剪裁
unity
小贺儿开发3 天前
DeepSeek + Codex + MCP:Unity 游戏开发实测
科技·游戏·unity·ai·程序员·编程·deepseek