Unity技能学院——Inputsystem第一期

RPG 游戏想必大家都不陌生。作为游戏类型中的一大分支,RPG 游戏通常需要玩家控制一个角色去探索剧情、与其他玩家互动、与 NPC 交流、猎杀怪物等。

而作为玩家 与游戏交互的输入系统,在整个游戏开发过程中,起着举足轻重的作用。

这篇文章,就将带着读者们,一起初步介绍病探索一下 unity 的输入系统。[文中使用的unity 版本为 2020.3.33,编辑器为 visual studio 2022]

目前 unity 中存在 2 套不同的输入系统,一直以来使用的默认输入系统,以及近几年推 出的 InputSystem。接下来将分别介绍这 2 种输入系统,并简单阐述优缺点。

本篇介绍重点

1.unity 默认输入系统的简介

2.InputSystem的入门介绍

一、unity 默认输入系统的简介

unity 默认输入系统上手十分简单,对于没有复杂需求的情况下,使用起来非常方 便,也推荐初学者去使用。接下来我们来简单看一下,unity 默认输入系统是如何使用的

我们给 MainCamera 挂载一个 InputTest 脚本,在 InputTest 类的 Updaet 函数中添加 如下代码:

代码十分好理解,也很直观。Input.GetKeyDown()函数会去判断游戏运行时,用户是否摁下了某个按键。

传入的参数就如代码所示,当我们分别摁下 w/a/s/d 的时候就 会打印对应的日志。如下:

类似的我们可以通过

Input.GetMouseButtonDown(...) 获取鼠标事件;

Input.GetTouch(...)可以接收移动端的触屏事件;

Input.GetButtonDown(...)获取其他外设的输入。

如果我们想要实现摁下 wasd 操作物体移动,那么直接修改这里的 Debug.Log,改成自己实现的物体移动函数,就能够完成物体移动。

如果同学们对角色移动感兴趣,可以在添加助教老师微信咨询讨论,后续也会考虑专门针对移动出一篇详细的技能教程。这里主要介绍输入系统,就不再详细演示了。

Unity 这种默认输入系统优点很明显,使用方便、上手简单、也很直观。

不过在遇 到大项目时,也有比较显著的缺点。它会嵌套在每个控制文件中,导致项目耦合度高。遇见需要切换输入场景时(从角色控制切换到聊天输入),也需要自己去写代码控制。

因此,就出现了 InputSystem 这样一个,更符合大项目需求的低耦合、易于调试、 方便切换、跨平台、跨设备的输入系统,就诞生了。接下来,我们介绍一下 InputSystem的使用。

二、初探 InputSystem

1、安装

要安装 InputSystem,首先要找到菜单栏中的 Window->Package Manager,打开之后,找 到 InputSystem,点击 Install,完成安装。

随后会弹出对话框,询问你“是否用 InputSystem 来替换 unity 默认的输入系统”,我 们点击 Yes 即可。

随后等待 unity 重启后,就完成了 InputSystem 的安装。如果没有弹窗,也可以自行修 改项目设置,具体位置在 Edit -> Project Setting -> Player -> Other Setting -> Active Input Handling:

2、建立 InputActions

安装完之后,我们暂时还不能进行代码编写。我们需要先建立 InputActions 表。

在 Project文件夹中右键 create->Input Actions 创建一个对象,并重命名为 MyActions。

双击打开,我们可以看到下面这个界面:

我们点击 ActionMaps 右侧的加号按钮,添加两个输入控制表分别重命名为 PlayerMove和 UI,他们的作用是对于我们的输入进行分组。这样我们可以很方便的,将输入操作在玩 家移动和 UI 之间进行切换。

在中间一栏,点击 Actions 右侧加号按钮,添加我们自己的 Attack 和 Jump 动作:

我们目标是绑定给 Attack 和 Jump 绑定不同的按钮,并输出日志。接下来我们先点击Attack 旁边的加号,添加按钮绑定。

分别添加 a 和 s 按钮绑定这意味着当我们摁下 a 和s 的时候,都会触发 Attack 事件。同时,我们也为 Jump 绑定空格按钮。有 3 种方式可以绑 定。

第一种是直接选择 Path 中的按钮:

第二种,是在搜索栏中,搜索我们想要的按键。然后仔细筛选,就可以找到我们想要的 按键:

最后一种也是最推荐的方式。我们可以点击 Listen,此时它就会开始监听我们的操作。这时候,我们再摁一下我们想要的按键,系统就会自动显示对应的按钮。比如我们摁下D键:

到这里为止,我们就完成了角色移动的表配置,以及其按键绑定。我们需要将这张表生 成为我们能够使用的代码。我们在点击 Project 中 MyActions 表,在 Inspector 面板中就可以 看到这样的内容:

根据自己的喜好,修改合适的类名和命运空间,点击 apply 按钮,就可以自动生成我们想要的代码:

我们可以看到,在 Project 中就生成了一个代码文件。当然我们不需要去关心代码当中是什么样子的。

我们的目标是,学会如何使用它。

修改 InputTest 的代码,如下:

简单解释一下主要的代码:
第 7 行声明了 MyActions 变,并在函数中的第 11 行 new 了一下。
第 12 行和第 20 行,分别调用了 enable 和 disable 函数。这两个函数,通常要承兑的出现。

而最主要的输入响应函数,就是第 14 行和第 15 行。Performed 是一个委托,他在对应的按钮被摁下是,会激活 performed 委托。

因此我们给 performed 委托添加我们需要调用的 函数,来输出日志。运行一下,进行测试:

这篇文章,对 Unity 的 InputSystem 系统,进行了初步的探索和简单的介绍。在初步了 解了它的使用后,后续也将对 InputSystem 的使用进行更为深入的探索和更贴合实际项目的应用。

各位同学敬请关注!

猜你喜欢

转载自blog.csdn.net/Richard_shen/article/details/127689046