输入系统InputManager
输入系统InputManager
背景
现代游戏通常需要处理多种输入设备,包括键盘、鼠标、手柄和触屏等。为了应对复杂的输入场景,Unity提供了新的输入系统InputSytem来简化和标准化输入处理。框架的输入也是基于InputSytem,所以请将项目升级为InputSystem,并在ProjectSetting中设置InputSystem。
框架主要完成了InputSystem的前期配置,节约大量的配置和调试时间,此外提供了基础输入接口,并提供了unity内置键盘鼠标手柄和触屏等输入方式的检测api使用示例,方便开发者查阅使用。
InputSystem基本操作方法详见官方文档
使用
升级项目的输入系统
- InputSystem安装和配置参考:InputSystem
- 其中InputAction在项目中已经完成初始创建,不需要额外创建:
InputActions路径:项目路径\Assets\Scripts\Core\Manager\InputManager\InputActions.inputactions - 双击InputActions.inputactions文件,即可打开InputActions界面:
添加输入事件
公共输入检测
监听输入事件
通过注册InputSystem的输入事件,转由我们的事件系统去统一派发。
1 | public class InputManager |
完成事件转发
1 | // 搭配事件系统 |
私有输入检测
上面是声明全局的输入检测,处处可通过事件系统进行订阅输入事件。对于特殊的输入检测需求,以及检测和使用频率较低的输入检测,建议于对象内部自行进行输入检测,InputManager代码后面部分也提供了检测输入的内置api使用示例,方便查阅使用。
- 内置api使用示例:
- 具体使用示例:
1
2
3
4
5
6
7
8
9
10
11
12public class Pause : MonoBehaviour
{
private void Update()
{
// 监听esc摁键摁下
if (Keyboard.current.escapeKey.wasPressedThisFrame)
{
// 打开暂停界面
}
}
}
评论