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 类来处理用户输入,从键盘、鼠标、触摸屏到控制器等不同设备的输入事件。通过这些方法,您可以实现丰富的游戏逻辑和交互。

相关推荐
90后小陈老师8 小时前
Unity教学 项目2 2D闯关游戏
游戏·unity·游戏引擎
噗噗夹的TA之旅9 小时前
Unity Shader 学习20:URP LitForwardPass PBR 解析
学习·unity·游戏引擎·图形渲染·技术美术
nnsix9 小时前
Unity ReferenceFinder插件 多选资源查找bug解决
unity·游戏引擎·bug
gzroy11 小时前
Unity Shader Graph实现全息瞄准器
unity·游戏引擎
90后小陈老师14 小时前
Unity教学 基础介绍
unity·游戏引擎
90后小陈老师14 小时前
Unity教学 项目3 3D坦克大战
3d·unity·游戏引擎
秦奈16 小时前
Unity复习学习随笔(五):Unity基础
学习·unity·游戏引擎
nnsix16 小时前
Unity ReferenceFinder插件 窗口中选择资源时 同步选择Assets下的资源
java·unity·游戏引擎
麷飞花18 小时前
unity3d scene窗口选中物体, 在 hierarchy高光显示
unity·editor·unity3d·u3d·hierarchy
ۓ明哲ڪ18 小时前
Unity功能——关闭脚本自动编译(Unity2021.3)
unity·游戏引擎