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