欢迎光临散文网 会员登陆 & 注册

Unity新输入方案InputSystem介绍-(一)

2019-06-26 01:27 作者:YouSing  | 我要投稿

一、安装InputSystem

    打开Package Manager,记得把高级选项中的"显示预览包"打勾。

    选择InputSystem包,点击安装。

    如果网络不好,或者想要参考官方例子,可以到Github下载项目。Assets文件夹下的文件是官方的测试例子,请根据你的学习需求进行删减。不想通过Package Manager安装InputSystem,也可以用Unity直接打开Github克隆下来的项目。

https://github.com/Unity-Technologies/InputSystem

    打开PlayerSettings,在Active Input Handling中启用InputSystem功能(两个选项任一个都行)。

    这时候有可能提醒重启项目,按下Apply按钮即可。

    到此,InputSystem安装完毕。

二、了解InputSystem新增编辑器要素

1.InputSystem设置

    打开Project Settings,你会发现多了一个"Input System Package"选项卡。在这里,你可以新建一个设置资源,来重新设置InputSystem的更新模式、全局参数、支持设备等。

2.InputActionAsset

    点击菜单栏Assets/Create/Input Actions,即可新建一个InputActionAsset文件。选择该文件,你会发现一个编辑按钮和一个生成C#类选项。

    由于这个编辑器的介绍,会和下一篇一起讲,所以这里打开一下,就跳过

    这里先说一点题外话,整个InputSystem中,文本反序列化功能十分强大,可以通过json字符串参数调用一些API,来实现复杂的输入功能。甚至你用文本编辑器打开InputActionAsset文件,也会发现是个json格式的文本文件。而且自动生成C#类这个功能,应该是官方考虑一些繁琐操作,特意做的代码生成器。

3.InputSystem分析工具

    点击菜单栏Window/Analysis/Input Debugger,会出现下面这个别致的小东西

  • Devices:当前连接的输入设备;

  • Layouts:当前在InputSystem注册的Layout和Control;

  • Settings:InputSystem的设置;

  • Metrics:当前一些数据统计;

    在这里可以方便查看InputSystem的各类信息和状态,比如我打开了一个手柄设备,可以说是所有信息一览无余。

上到下分别为设备的注册信息、设备的控件状态、输入事件监视窗口

三、InputSystem设备管理的大致一览

    这里简单总结一下InputSystem的架构,一个输入设备抽象成Layout(布局),一个输入元件抽象成Control(控件)。一个设备像是拼积木玩具似的,一个Layout包含多个Control,然后注册到InputSystem中。

    现在让我们回来看看,刚才略过的Input Debugger→Layouts:

Control(控件),组成输入设备的小元件
Abstract Device(抽象设备),一般是特定设备的模板
Specific Device(特定设备),这边已经整合了大部分主流XR设备

    代码访问设备也十分简单。一类输入设备,通常有两个静态属性,current(当前设备)和all(所有设备列表)。比如,打印手柄的右扳机的数值,可以这样写:

print(Gamepad.current.rightTrigger.ReadValue());

    当然Input小老弟能做的事情,InputSystem也能做。比如鼠标刚按下左键,键盘刚刚弹起空格键,可以这么写:

print(Mouse.current.leftButton.wasPressedThisFrame);

print(Keyboard.current[Key.Space].wasReleasedThisFrame);

    官方也给出了Input迁移到到InputSystem的文档,大致都是静态函数返回值,变成某一类设备的Control数值或是状态值,这样一个套路。为了把大量设备接口暴露出给开发者,官方不得不爆肝更新,但可惜正式版也各种跳票。


四、个人对InputSystem的展望

    如果有能力研究源码的小伙伴,想了解一下各种设备如何接入InputSystem,可以看看InputSystem/Plugins这个文件夹。这个同时也是作为第三方设备接入InputSystem的第一手参考资料。而且目前看来,官方虚拟按键和虚拟摇杆已经在做了,想必开发移动端游戏会更加容易。

    这里举几个令人兴奋的新用途(虽然大部分和XR相关):

  • 绑定XR跟踪设备更加轻松灵活:

这里演示的是绑定一个左手XR手柄的跟踪
  • UGUI的Input会更加人性化:

试问多少人为XR的UI输入头疼?
  • 输入参数变成,输入绑定或输入资源?:

先埋个伏笔
  • 更多官方插件和第三插件整合InputSystem...

    下一篇,就是本系列的压轴,InputAction的编辑和使用。

大家,下篇见


Unity新输入方案InputSystem介绍-(一)的评论 (共 条)

分享到微博请遵守国家法律