Unity Input System 01 快速上手

Input System

翻译, 这是原文1
原文2
并没有经过官方同意(没有问),不同意还不让发了???

安装

可以同时启用旧的InputManage和新的InputSystem, 也可以只用一个. 在 Edit > Project Settings > Player 中设置(每个平台都不同, 在下面中间的位置)

直接获取设备的输入

最简单的, 就是直接读取输入设备的当前状态(按了哪个键之类的)。例如,以下代码获取玩家最后使用的手柄,并读取其当前状态

using UnityEngine;
using UnityEngine.InputSystem;

public class MyPlayerScript : MonoBehaviour
{
    void FixedUpdate()
    {
        var gamepad = Gamepad.current;
        if (gamepad == null)
            return; // No gamepad connected.

        if (gamepad.rightTrigger.wasPressedThisFrame)
        {
            // 'Use' code here
        }

        Vector2 move = gamepad.leftStick.ReadValue();
        // 'Move' code here
    }
}

同样的方法也适用于其他设备类型,如Keyboard.currentMouse.current

从输入动作(Input Action)获取输入

分为3步:

  1. 添加PlayerInput组件
  2. 创建动作
  3. 编写脚本,设置动作响应

添加PlayerInput组件

直接从输入设备获取输入既快捷又方便,但是每种类型的设备都需要不同的代码。这也使得以后若想改变一种触发方式(原来用鼠标,现在用手柄),来触发游戏中特定的事件,变得更加困难。
您可以使用动作作为设备和它们所触发的游戏内响应之间的媒介。最简单的方法是使用PlayerInput组件。
Unity Input System 01 快速上手_第1张图片

创建输入动作

每个PlayerInput组件表示游戏中的一个玩家。为了接收输入,该组件必须连接到一组InputAction。创建一组新动作的最快方法是单击组件上的Create Actions按钮。这将创建一个自动配置好的资产:默认InputAction映射、InputAction、输入绑定。
Unity Input System 01 快速上手_第2张图片
这将在您的项目中创建一个新的 .inputaction 资产,将其连接到PlayerInput组件,并打开.inputactions文件的编辑器窗口。
Unity Input System 01 快速上手_第3张图片
您可以编辑默认设置以适应项目的需要。有关如何使用此窗口的说明,请参阅动作编辑器。

编写脚本,设置动作响应

一旦组件有了一些Action,您必须为每个Action设置一个响应。
Unity Input System 01 快速上手_第4张图片
有关选项的详细信息,请参见这里。上面的截图使用了Invoke Unity事件,它使用UnityEvent的方式(和Unity UI一样)。Unity为链接到组件的每个动作显示一个事件。您可以为每个事件绑定方法。
Unity Input System 01 快速上手_第5张图片
每个方法都带有一个InputAction.CallbackContext参数,该参数可访问触发了Action的Control和Action的值。 有关更多信息,请参见有关Action回调的文档。

你可能感兴趣的:(Unity3D,Input,System)