找回密码
 立即注册
查看: 119|回复: 0

[笔记] input System 新版Unity输入系统学习(3)

[复制链接]
发表于 2024-7-15 18:48 | 显示全部楼层 |阅读模式
inputSystem 输入配置文件

新版系统中提供了一个输入配置文件,类似于一个inputAction的调集,
相当于一个对InputAction的统一打点。
创建 InputActions



这个文件的本质是Json

如果我们随便在此中创建一点东西,并以记事本格式打开这个物体时。




可以很明显的看出,这是一个Json格式的文本文件,只是后缀名不是Json(这种东西反正无所谓的对吧)



每个最左方的Map都相当于一个inputAction的调集,相当于每个Map是一套输入规范
有关于Actions内部的内容,请看第二期文章QAQ 这里就不赘述了。
添加控制方案




添加控制方案



添加指定平台
这个东西本质上就是用于切换平台使用的。当创建了多个时,可以直接切换左上角来选择指定平台的操作。


KeyBoard控制方案



Mouse控制方案



Pen面板

可以通过这种控制方案来切换方案分类,用来更加容易的查看和编纂当前所需要改削的方案。
使用inputSystem 输入配置方案

按照配置文件生成C#代码




勾选生成C#脚本

C# Class File 生成路径
C# Class Name 生成路径名
C# Class Namespace 生成定名空间



默认生成的脚本

使用生成出来的类,生成出来的类内部的函数名字都是在inputActions 面板中本身添加的。



使用脚本



使用打印。



我的面板

PlayerInput使用




PlayerInput

Actions - 本身创建的Actions 一套输入动作
   Default Scheme 默认选择那一套输入控制方案
   Defaykt Actuibs Nap 默认使用哪一个行为映射方案
UIInputModule -- 用于新版控制UI的脚本改削原版System的报错可以得到。



当然,也可以手动添加

Camera:关联摄像机,当分屏设置时才需要改削这个选项
Behavior 如何通知游戏对象上执行对应逻辑, 部属四个选项
SendMessages 将逻辑脚本挂载在和Playerinput同一对象上,会通过SendMessage通知执行对应函数
BroadcastMessahe 将逻辑脚本挂载到自身或子对象上,会通过BrodcastMessage通知执行对应函数
Invoke UNityEvent Actions : 通过拖拽脚本关联函数执行想要执行的函数逻辑
INvoke CSharp Events 通过C#事件进行箭筒措置对应逻辑,通过获取PlayerInput进行事件监听
<hr/>
PlayerInput Behavior 选项实际使用

1.SendMessages 选项




  1.     //在自定义脚本中,可以申明名为 On+行为名的函数
  2.     //将这个脚本挂载到Playerinput依附的对象上,当触发对应输入时,会自动调用该函数
  3.    
  4.     //而且,还有默认的三个与设备有关的函数可以调用
  5.     //1设备注册 当控制器从设备丢掉中答复,并再次运行时会触发, OnDeviceRegained(PlayerInput input)
  6.     //2设备丢掉 玩家掉去了分配给它的设备之一时。OnDeviceLost(PlayerInput input)
  7.     //3控制器切换 OnControlsChanged(PlayerInput input)
  8.     public void OnMove()
  9.     {
  10.         Debug.Log(”打印出成果”);
  11.     }
复制代码

OnMove内的参数可以是空也可以是
  1.     public void OnMove(InputValue value)
  2.     {
  3.         Debug.Log(”打印出成果”);
  4.     }
复制代码
2.BroadcastMessahe选项

这个选项的本质与上个选项SendMessages基本不异,分歧的处所是,BroadcastMessahe会查抄子物体身上脚本的函数,而SendMEssages不会。



将脚本挂载到子物体上



打印成果。

3.Invoke UNityEvent Actions 选项

这个模式可以让我们在inspector窗口上通过拖拽的方式关联响应函数,就像是Button中的Onclick一样。
但是,这个响应函数的参数类型,需要改为InputAction.CallBackContext == 这个参数之前就有使用过。



三个基本响应函数,外加一个本身自定义的。



通过拖拽的方式绑定方式
  1.     public void localMove(InputAction.CallbackContext context)
  2.     {
  3.         Debug.Log(”打印出成果”);
  4.     }
复制代码


成果依旧正常

4.invoke CSharp Events 选项

获取Playerinput组件
获取对应事件进行委托函数添加,当触发输入时会自动触发事件调用对应函数



代码

打印也是与之前不异,就不再赘述了。
这个中的input.onActionTriggered 事件中包含所有的自定义按键回调,这里我写了一个Move的Vector2,四个按键WSAD,无论按下阿谁按键,这个事件城市被触发,所以,这个时候就需要进行一次判断措置。



代码,其实内部判断还是主要来源于,CallBackContext这个类中的属性



打印

<hr/>完成.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-8 09:53 , Processed in 0.102605 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表