Menu
CoddyTech

两种输入系统

本课属于 Coddy Unity 学习旅程的“打造真正的游戏”单元。第 44 课,共 60 课。

Unity 有两种读取键盘和鼠标输入的方式。你目前使用的是 Input Manager:通过 Input 类中的 GetKey、GetAxis 和 GetButtonDown,以及在 Project Settings > Input Manager 中命名的轴和按钮。较新的方式是 Input System package(com.unity.inputsystem)。使用它的脚本会以 using UnityEngine.InputSystem; 开头,它会将设备作为对象读取,例如 Keyboard.current 和 Mouse.current,也可以通过操作读取:操作是玩家执行的、带有名称的事情,例如 Move 和 Jump,每个操作都可以绑定到按键、摇杆和按钮。

项目使用哪种方式由 Player 设置决定:Edit > Project Settings > Player > Other Settings > Active Input Handling,这里有三个选项:Input Manager (Old)、Input System Package (New) 和 Both。新的 Unity 6 项目默认使用 Input System Package (New)。在这种设置下,每次调用 Input 类都会抛出 InvalidOperationException,并提示你正在通过 UnityEngine.Input 读取输入,而项目使用的是 Input System package。这就是为什么之前的课会让你选择 Both。更改此设置需要重启编辑器,Unity 会提供重启选项。

Unity 6 默认使用新系统,因为一个 API 就能支持键盘、鼠标、游戏手柄、触摸屏和 XR 控制器,也因为操作能让按键设置留在代码之外:脚本读取 Jump 操作,同一行代码就能处理 Space、游戏手柄的 A 按钮或手机屏幕上的按钮,也能适用于重新绑定按键的玩家。旧版 Input Manager 仍可用于旧项目。Coddy 的游戏视图相当于使用 Both,因此按键、点击和手机上的方向键与 Jump 都会传递给两个系统。本章其余部分将使用 Input System。

亲手试试

这节课没有代码挑战。

打造真正的游戏中的所有课

自己练习: Unity 在线编辑器