Unity新一代输入系统介绍

在Unity 2019.1及更高版本中,我们将提供Unity新一代的输入系统预览版,该系统简单易用,并具有多平台一致性和灵活性的特点。

Unity现有的内置输入管理系统在设计时,Unity引擎远远没有像今天一样庞大而丰富的平台和设备支持规模。多年来,我们逐渐认识到该系统使用起来并不容易,甚至是可执行程序启动后插入控制器这样简单的操作都不尽人意。

近年来,新技术极大地改变了我们运行游戏及观看数字内容的方式。每一次技术浪潮都会带来新的设备以及控制方式。因此,我们开始着手制作新一代系统,重改这部分功能。

新一代的输入系统具有易用、多平台一致性和灵活性的特点。我们邀请开发者试用新系统,并向我们提供反馈意见。新一代输入系统预计与Unity 2020.1一同发布,最低版本要求为Unity 2019.1。需要注意,我们暂未有现有输入管理器的移除时间。


使用简单

新一代输入系统的工作流程具有一个适用于所有平台的简洁界面,可以轻松扩展以支持定制或未来的设备。

以Action动作为重点的工作流程将划分出不同玩家操作和所对应的游戏代码逻辑输入。我们可以在专用编辑器或脚本中定义各个动作,将其绑定到抽象或实际的输入命令上,例如:控制设备的原始输入操作或鼠标左键。

如下图所示,动作导图(Action Maps)让管理多个设备和操控方案变得简单便捷。


我们可以使用输入系统的Player Input组件,轻易地将输入指令绑定到一个游戏对象或者脚本动作响应上。该组件可应用到游戏中任意数量的玩家身上。


下面为指令发出后取得回调命令的代码。

public void   OnMove(InputValue value)
{
    m_Move = value.Get<Vector2>();
}
public   void OnLook(InputValue value)
{
    m_Look = value.Get<Vector2>();
}
public void OnFire()
{
    SpawnProjectile();
}

新一代输入系统支持无限数量的设备以及混用,还会通知玩家关于设备的变更,从而在运行时便可以正常支持新的设备。

请注意,在主机上进行开发需要安装额外的软件包。我们可以在这些主机论坛上找到适用于Unity的安装程序。

关于支持输入设备列表,请参考:https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/SupportedDevices.html

自定义功能

新一代的输入系统具有可拓展性,其API支持新设备,并帮助开发者设计交互指令、输入处理器、甚至自定义输入绑定设置。

如果你想深入了解其中的原理,该资源包提供完整的源代码,请访问:https://github.com/Unity-Technologies/InputSystem

下图为部分默认交互指令,开发者可以轻易地创建自定义指令。


开始使用

在Unity 2019.1或更高版本中,打开资源包管理器,在菜单“Advanced”中点击“Show Preview Packages”,你可以在“All Packages”列表下找到Input System。


在Input System资源包的详情面板右下角单击“Install”按钮,当前版本为1.0-preview。单击Install按钮后,编辑器会弹出警告窗口,提示需要启用新一代输入系统的后端,点击“Yes”,然后重启编辑器,就可以开始使用了。


小结

我们将持续开发Input System资源包,添加更多新功能,使其在Unity 2020.1中成为已验证的正式版资源包。

如何使用新一代输入系统,请参考:https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/QuickStartGuide.html

你也可以在资源包管理器中下载示例,提供反馈信息,请访问Unity官方论坛:https://forum.unity.com/forums/new-input-system.103

本文转自: Unity官方平台,转载此文目的在于传递更多信息,版权归原作者所有。

推荐阅读