第 3 章 输入 输入
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
让玩家控制你的游戏是非常重要的!这是互动游戏的核心原则。在本章中,我们将了解游戏开发者最常见的一些输入要求。值得庆幸的是,Unity 提供了多种输入方法,从键盘和鼠标输入到游戏手柄输入,再到允许鼠标指针控制的更复杂的系统。我们将在此逐一介绍。
备注
在本章中,您将同时使用传统的 Input 类和 Unity 的新输入系统。它们在现代 Unity 项目中都有自己的用武之地。
3.1 获取简单的键盘输入
问题
您想知道用户何时在键盘上按键,而且步骤越少越好。
解决方案
使用传统Input 类的GetKeyDown 、GetKeyUp 和GetKey 方法来查找正在按下的键:
if(Input.GetKeyDown(KeyCode.A)){Debug.Log("The A key was pressed!");}if(Input.GetKey(KeyCode.A)){Debug.Log("The A key is being held down!");}if(Input.GetKeyUp(KeyCode.A)){Debug.Log("The A key was released!");}if(Input.anyKeyDown){Debug.Log("A key was pressed!");}
讨论
每种方法的响应时间都不同:
-
GetKeyDown返回 此帧开始按键的时间。true -
GetKeyUp返回 ,表示该帧上的按键已被释放。true -
GetKey如果当前按键被按住,则返回 。true
您还可以使用anyKeyDown 属性来查询 是否有任何按键被按下,这在您要求玩家 "按任意键继续 "时非常有用。
备注
Input 类是传统输入管理器系统的一部分,它可以追溯到 Unity 的最早版本。 Input 操作简单,在新项目中默认可用,但它有很多局限性:它不允许自定义按钮与游戏内操作的映射,设置游戏内操作也不是非常容易,最终你不得不在它的基础上构建一些系统。
更好的解决方案是 Unity 输入系统,它可以解决所有这些问题,也是我们在本章剩余部分要使用的系统。
3.2 使用 Unity 输入系统
问题
您想使用 Unity 输入系统获取用户输入。
解决方案
按照以下步骤从软件包管理器安装Unity 输入系统(配方 1.9):
-
选择窗口 → 软件包管理器,打开软件包管理器窗口。
-
将窗口左上角的 "包 "设置从 "在项目中 "更改为 "Unity 注册表"。
-
向下滚动到软件包列表中的输入系统,或在右上角的搜索栏中搜索输入系统。
-
从列表中选择输入系统,然后单击安装按钮。
Unity 会下载并将输入系统软件包安装到你的项目中。Unity 可能会询问您是否要更新项目设置以使用新的输入系统;选择 "是",然后会重新启动编辑器。
安装输入系统后,您就可以在代码中使用它了。
例如,我们可以使用下面的方法来重现配方 3.1 中的操作,但要使用输入系统:
usingUnityEngine.InputSystem;if(Keyboard.current.aKey.wasPressedThisFrame){Debug.Log($"The A key was pressed!");}if(Keyboard.current ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access