[Unity插件]InputSystem

声明:此篇文章是个人学习心得,并非教程。不保证百分百正确,仅供参考。如有错误,欢迎指出。谢谢!


目录

一.InputSystem的安装

二.InputActions创建和设置

三.InputActions的参数

1.Scheme

2.ActionType

四.Inputsystem的交互实现

1.PlayerInput组件实现交互

Invoke Unity Events实现

Invoke C Sharp Events实现

2.C#脚本实现交互

CallbackContext

3.切换ActionMap

4.触摸屏交互


        新的inputsystem较于老的inputsystem兼容性更强,也让我们不用再去关注输入的条件判断。所以还是值得学习一下。

一.InputSystem的安装

点击Window-PackageManager 里搜InputSystem进行安装

[Unity插件]InputSystem_第1张图片

安装完后会弹出个提示,意思就是用开启新的输入系统,禁用旧的输入系统。我们可以点击确定,等他重新开启。也可以直接在Editor-ProjectSetting-Player-OtherSetting中中找到Active Input Handing设置(如果上面提示框确定了这边会自动设置为新的输入系统。我们也可以手动设置成Both)。

[Unity插件]InputSystem_第2张图片

[Unity插件]InputSystem_第3张图片


二.InputActions创建和设置

安装完后我们就可以再Assets里面去创建InputActions,具体位置如下

[Unity插件]InputSystem_第4张图片

双击创建的文件,就可以打开输入设置面板,我们在上面进行设置后,要点保存Assets

[Unity插件]InputSystem_第5张图片


三.InputActions的参数

1.Scheme

scheme主要用来分类控制器的

我们上面一套设置后,可以算键盘的输入。如果我们需要别的输入系统,如手柄的输入。我们则须先把原先设置好的添加为Keyboard Scheme。如下图所示

需要注意的是 我们添加完后 需要运用到该scheme的按键都要勾选use in control scheme。我们的键盘配置就好了。

这时候再点击scheme的添加,就可以添加其他输入系统的scheme了,我们会发现动作都在,只是绑定的键位都不见了。我们只需要重新绑定键位即可。

绑定完后,我们发现总scheme的Jump交互方式就多了一个(没有设备,只能用鼠标测试)

2.ActionType

Value:输出一个数值,数值改变调用输入事件

Button:Start,Perform,Cancel三个的时机都会调用输入事件。

Pass Through:按下,弹起各执行一次输入事件(都算在perform阶段)。


四.Inputsystem的交互实现

1.PlayerInput组件实现交互

InputActions都准备好后,我们就可以设置输入后的逻辑实现。我们可以用PlayerInput组件进行事件绑定。面板上添加回调函数(Behavior选择Invoke Unity Events)或者在c#脚本里面实现绑定函数(Behavior选择Invoke C Sharp Events)就可以实现输入后的逻辑了。

Invoke Unity Events实现

1.Behavior设置

[Unity插件]InputSystem_第6张图片

2.找到对应按钮进行添加回调函数即可。

[Unity插件]InputSystem_第7张图片

Invoke C Sharp Events实现

1.Behavior设置为Invoke C Sharp Events

[Unity插件]InputSystem_第8张图片

2.在脚本中获取PlayerInput组件,并进行事件绑定

[Unity插件]InputSystem_第9张图片

[Unity插件]InputSystem_第10张图片

2.C#脚本实现交互

如果我们不希望组件来实现交互,我们也可以选择完全用脚本来进行交互。

1.找到前面设置好的InputActions,我们可以在Inspector面板中导出脚本(点击Apply)。

[Unity插件]InputSystem_第11张图片

2.脚本实现绑定

[Unity插件]InputSystem_第12张图片

CallbackContext

我们可以通过脚本传递的CallbackContext信息来进行对应的操作

CallbackContext有三个阶段(Phase),Started(执行),Performed()和Canceled(取消),如果不进行阶段判断。则函数会一次性执行三次。

3.切换ActionMap

SwitchCurrentActionMap的API

4.触摸屏交互

给交互物体挂上On-Screen Button脚本和On-Screen Stick脚本

你可能感兴趣的:(Unity,unity,游戏引擎)