声明:此篇文章是个人学习心得,并非教程。不保证百分百正确,仅供参考。如有错误,欢迎指出。谢谢!
目录
一.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兼容性更强,也让我们不用再去关注输入的条件判断。所以还是值得学习一下。
点击Window-PackageManager 里搜InputSystem进行安装
安装完后会弹出个提示,意思就是用开启新的输入系统,禁用旧的输入系统。我们可以点击确定,等他重新开启。也可以直接在Editor-ProjectSetting-Player-OtherSetting中中找到Active Input Handing设置(如果上面提示框确定了这边会自动设置为新的输入系统。我们也可以手动设置成Both)。
安装完后我们就可以再Assets里面去创建InputActions,具体位置如下
双击创建的文件,就可以打开输入设置面板,我们在上面进行设置后,要点保存Assets
scheme主要用来分类控制器的
我们上面一套设置后,可以算键盘的输入。如果我们需要别的输入系统,如手柄的输入。我们则须先把原先设置好的添加为Keyboard Scheme。如下图所示
需要注意的是 我们添加完后 需要运用到该scheme的按键都要勾选use in control scheme。我们的键盘配置就好了。
这时候再点击scheme的添加,就可以添加其他输入系统的scheme了,我们会发现动作都在,只是绑定的键位都不见了。我们只需要重新绑定键位即可。
绑定完后,我们发现总scheme的Jump交互方式就多了一个(没有设备,只能用鼠标测试)
Value:输出一个数值,数值改变调用输入事件
Button:Start,Perform,Cancel三个的时机都会调用输入事件。
Pass Through:按下,弹起各执行一次输入事件(都算在perform阶段)。
InputActions都准备好后,我们就可以设置输入后的逻辑实现。我们可以用PlayerInput组件进行事件绑定。面板上添加回调函数(Behavior选择Invoke Unity Events)或者在c#脚本里面实现绑定函数(Behavior选择Invoke C Sharp Events)就可以实现输入后的逻辑了。
1.Behavior设置
2.找到对应按钮进行添加回调函数即可。
1.Behavior设置为Invoke C Sharp Events
2.在脚本中获取PlayerInput组件,并进行事件绑定
如果我们不希望组件来实现交互,我们也可以选择完全用脚本来进行交互。
1.找到前面设置好的InputActions,我们可以在Inspector面板中导出脚本(点击Apply)。
2.脚本实现绑定
我们可以通过脚本传递的CallbackContext信息来进行对应的操作
CallbackContext有三个阶段(Phase),Started(执行),Performed()和Canceled(取消),如果不进行阶段判断。则函数会一次性执行三次。
SwitchCurrentActionMap的API
给交互物体挂上On-Screen Button脚本和On-Screen Stick脚本