input System 新版Unity输入系统学习(3)
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 选项
//在自定义脚本中,可以申明名为 On+行为名的函数
//将这个脚本挂载到Playerinput依附的对象上,当触发对应输入时,会自动调用该函数
//而且,还有默认的三个与设备有关的函数可以调用
//1设备注册 当控制器从设备丢掉中答复,并再次运行时会触发, OnDeviceRegained(PlayerInput input)
//2设备丢掉 玩家掉去了分配给它的设备之一时。OnDeviceLost(PlayerInput input)
//3控制器切换 OnControlsChanged(PlayerInput input)
public void OnMove()
{
Debug.Log(”打印出成果”);
}
OnMove内的参数可以是空也可以是
public void OnMove(InputValue value)
{
Debug.Log(”打印出成果”);
}2.BroadcastMessahe选项
这个选项的本质与上个选项SendMessages基本不异,分歧的处所是,BroadcastMessahe会查抄子物体身上脚本的函数,而SendMEssages不会。
将脚本挂载到子物体上
打印成果。
3.Invoke UNityEvent Actions 选项
这个模式可以让我们在inspector窗口上通过拖拽的方式关联响应函数,就像是Button中的Onclick一样。
但是,这个响应函数的参数类型,需要改为InputAction.CallBackContext == 这个参数之前就有使用过。
三个基本响应函数,外加一个本身自定义的。
通过拖拽的方式绑定方式
public void localMove(InputAction.CallbackContext context)
{
Debug.Log(”打印出成果”);
}
成果依旧正常
4.invoke CSharp Events 选项
获取Playerinput组件
获取对应事件进行委托函数添加,当触发输入时会自动触发事件调用对应函数
代码
打印也是与之前不异,就不再赘述了。
这个中的input.onActionTriggered 事件中包含所有的自定义按键回调,这里我写了一个Move的Vector2,四个按键WSAD,无论按下阿谁按键,这个事件城市被触发,所以,这个时候就需要进行一次判断措置。
代码,其实内部判断还是主要来源于,CallBackContext这个类中的属性
打印
<hr/>完成.
页:
[1]