Unity 新输入系统概述

Unity 中的新输入系统提供了更新、灵活且更直观的方法来处理游戏中的输入。借助该系统,开发人员可以满足从游戏控制器到 VR 手机等各种设备的需求,使游戏玩法更加动态和身临其境。

1. 为什么采用新系统

Unity 中的 传统输入系统 的功能有限且不可扩展。新输入系统 提供统一的 API,解决以前的限制并为现代游戏开发提供高级功能。

2. 配置

要开始使用新输入系统,必须首先从 Unity 中的包管理器安装它。添加后,从旧系统的过渡需要对脚本和设置进行某些调整。

3. 主要特征

  • 操作和绑定: 开发人员不是直接引用按钮或键,而是定义操作,然后将这些操作绑定到特定的键或按钮。
  • 设备多样性: 轻松支持多种设备,从传统游戏手柄到触摸屏和 VR 手机。
  • 玩家控件: 提供用于重新绑定控件的内置机制,允许玩家根据喜好设置控件。
  • 高级事件处理:事件 可以通过多种方式进行处理,无论是基于轮询还是基于回调,从而授予更多控制权。

4. 创建输入动作

输入操作是一种新的资产类型,允许定义输入行为而无需编写脚本。创建后,可以将其放入脚本中,将游戏玩法直接连接到玩家输入。

5. 脚本中的实现

  • 新输入系统与 Unity 脚本环境无缝集成。该系统使用可以在脚本中调用的“操作”,而不是较旧的 'Input.GetKey''Input.GetAxis' 方法。检查下面的示例:
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerMovement : MonoBehaviour
{
    public float speed = 5.0f;
    private Vector2 moveInput;

    public void OnMove(InputAction.CallbackContext context)
    {
        moveInput = context.ReadValue<Vector2>();
    }

    void Update()
    {
        Vector3 move = new Vector3(moveInput.x, 0, moveInput.y) * speed * Time.deltaTime;
        transform.Translate(move);
    }
}

让我们分解一下上面提供的代码示例:

  • 命名空间 'UnityEngine.InputSystem' 命名空间对于使用新功能至关重要。
  • 'moveInput':该变量存储输入值,通常表示水平和垂直输入。
  • 'OnMove()':定义为公共函数,'OnMove' 可以直接链接到 Unity 编辑器中的输入操作。该方法利用 'InputAction.CallbackContext' 读取输入值并将它们分配给我们的 'moveInput' 变量。
  • 'Update()':在 'Update' 方法中,存储的输入值决定移动方向。输入被转换为用于角色移动的 3D 矢量,考虑到定义的速度和与帧无关的移动的 Unity 'Time.deltaTime' 因素。

为了使该脚本正常工作,通过 Unity 编辑器将 'OnMove' 方法链接到输入操作非常重要。此连接确保当玩家提供输入(例如移动 操纵杆 或按箭头键)时,相应的操作会触发所需的脚本 function

结论

Unity 中的新输入系统是一个强大且必要的演变,符合现代游戏开发的需求。它提供多功能性、精确性和用户定制功能,使游戏交互更具吸引力和响应性。

推荐文章
掌握 Unity:游戏开发新手的 5 个基本技巧
如何在 Unity 中将相机分配给脚本
在 Unity 中创建尖叫游戏
在 Unity 中创建受 Poppy Playtime 启发的游戏
通过 Unity 探索无限创造力的大门
Unity中粒子系统简介
在 Unity 中创建移动恐怖游戏