赞
踩
在Window——PackageManage中搜索InputSystem,下载导入。如果搜不到,则调整为UnityRegistry。
Edit——ProjectSettings——Player——OtherSettings——Configuration——Active Input Handling,选择旧版或者新版,也可以选择兼容。
三、使用
请使用InputSystem为一个3D对象制作通过键盘移动跳跃,鼠标攻击的脚本。
我们先采取直接使用InputAction的方式来编写脚本,而InputAction则是这个系统的核心。
是InputSystem为我们封装的一个类,作用是不必通过编写代码来获取设备的信号输入,而是直接在Inspector窗口编辑,方便我们专注于编写按键触发后的逻辑。
使用前需要引用using UnityEngine.InputSystem。
[Header("移动")]
public InputAction Move;
[Header("攻击")]
public InputAction Attack;
[Header("跳跃")]
public InputAction Jump;
然后我们直接在Inspector窗口编辑
首先点击齿轮符号
Value——值类型,主要用于状态连续更改的输入设备,如鼠标移动,手柄遥感。若有多个设备绑定此Action,只会发送最受控制的输入。
Button——按钮类型,处理按下类型。
PassThrough——直通类型,与Value一样,但如果有多个设备绑定,会发送所有设备的输入。
多次点击,例如双击或者三连击。
Clamp
将输入值钳制到[min…max]范围。
Invert
反转控件中的值(即,将值乘以-1)。
Invert Vector 2
反转控件中的值(即,将值乘以-1)。如果invertX为真,则反转矢量的x轴;如果invertY为真,则反转矢量的y轴。
Invert Vector 3
反转控件中的值(即,将值乘以-1)。如果反转x为真,则反转矢量的x轴;如果反转y为真,则反转y轴;如果反转z为真,则反转z轴。
Normalize
如果最小值>=零,则将[min…max]范围内的输入值规格化为无符号规格化形式[0…1],如果最小值<零,则将输入值规格化为有符号规格化形式[-1…1]。
Normalize Vector 2
将输入向量规格化为单位长度(1)。
Normalize Vector 3
将输入向量规格化为单位长度(1)
Scale
将所有输入值乘以系数。
Scale Vector 2
将所有输入值沿x轴乘以x,沿y轴乘以y。
Scale Vector 3
将所有输入值沿x轴乘以x,沿y轴乘以y,沿z轴乘以z。
Axis Deadzone
axis死区处理器缩放控件的值,使绝对值小于最小值的任何值为0,绝对值大于最大值的任何值为1或-1。许多控件没有精确的静止点(也就是说,当控件位于中心时,它们并不总是精确报告0)。在死区处理器上使用最小值可避免此类控件的无意输入。此外,当轴一直移动时,某些控件不一致地报告其最大值。在死区处理器上使用最大值可确保在这种情况下始终获得最大值。
Stick Deadzone
摇杆死区处理器缩放Vector2控件(如摇杆)的值,以便任何幅值小于最小值的输入向量都将得到(0,0),而任何幅值大于最大值的输入向量都将规格化为长度1。许多控件没有精确的静止点(也就是说,当控件位于中心时,它们并不总是精确地报告0,0)。在死区处理器上使用最小值可避免此类控件的无意输入。此外,当轴一直移动时,某些控件不一致地报告其最大值。在死区处理器上使用最大值可确保在这种情况下始终获得最大值。
点击+号
添加之后双击它们
首先我们需要启用输入检测 然后其拥有三种事件——开始,触发,结束 这些拥有一个参数,通过这个参数我们可以获得相关信息 void Start() { //启用 Move.Enable(); //开始事件调用 Move.started += (con) => { print("start"); }; //触发事件调用 Move.performed += (con) => { //当前状态 //没有启用是 Disabled //等待是 Waiting //开始是 Started //触发是 Performed //结束是 Canceled print(con.phase); //action名字 print(con.action.name); //控件路径 print(con.control.path); //控件信息 print(con.control.name); //返回的值 print(con.ReadValue<Vector2>()); //持续时间 print(con.duration); //事件开始时间 print(con.startTime); }; //结束事件时间 Move.canceled += Move_canceled; } private void Move_canceled(InputAction.CallbackContext obj) { print("canceled"); }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。