文章目录
顾名思义,InputAction 是 InputSystem 帮助我们封装的输入动作类
它的主要作用,是不需要我们通过写代码的形式来处理输入,而是直接在 Inspector 窗口编辑想要处理的输入类型
当输入触发时,我们只需要把精力花在输入触发后的逻辑处理上
我们在想要用于处理输入动作的类中,申明对应的 InputAction 类型的成员变量(注意:需要引用命名空间 UnityEngine.InputSystem)
编写脚本挂载到物体上
public class Lesson7 : MonoBehaviour
{
[Header("Binding")] public InputAction move;
[Header("1D Axis")] public InputAction axis;
[Header("2D Vector")] public InputAction vector2D;
[Header("3D Vector")] public InputAction vector3D;
[Header("Button With One")] public InputAction btnOne;
}
(一)点击齿轮
(1)Action:输入动作设置
Action Type:动作类型
Value:值类型
主要用于状态连续更改的输入,例如鼠标的移动,手柄的遥感。如果有多个设备绑定这个 Action,只会发送其中一个设备(最受控制的)的输入
Button:按钮类型
用于每次按下时触发的 Action
Pass Through:直通类型
和 Value 一样,区别在于如果有多个设备绑定这个 Action,会发送所有设备的输入
Control Type:控制类型
在这里选择对应的类型,之后在选择对应设备按键相关属性时,会根据你选择内容的不同,筛选对应内容
这上面显示的内容就是各设备属性的返回值类型
当你选择他们后,非选择的类型将不会在之后的按键设置中出现
很多内容我们基本用不到,相当于是在这里筛选输入设备
| 名称 | 解释 | 名称 | 解释 |
|---|---|---|---|
| Any | 任何值 | Integer | 整数 |
| Axis | 一维轴浮点数,例如:摇杆输入返回值 | Quaternion | 四元数 |
| Bone | 骨骼 | Stick | 摇杆相关 |
| Digital | 数字 | Touch | 触屏相关 |
| Dpad | 4 向按钮,例如:摇杆上的 D-pad | Vector2 | 2 维向量 |
| Eyes | VR 相关数值 | Vector3 | 3 维向量 |
(2)Interactions:相互作用设置
用于特殊输入,比如长按、多次点击等等,当满足条件时才会触发这个行为(设置长按时间、点击次数等等)
默认关联了以下 3 个输入事件,我们可以通过代码为事件添加监听逻辑:
Hold:长按。
适用于需要输入设备保持一段时间的操作。
当按钮按下会触发 Started。
若在松开按钮前,按住时间大于等于 Hold Time 则会触发 Performed(时间一到就触发)
否则触发 Canceled。
Tap:单击
和 Hold 相反,需要在一段时间内按下松开来触发。
当按钮按下会触发 Started
若在 Max Tap Duriation 时间内(小于)松开按钮,触发 Performed
否则触发 Canceled。
SlowTap:长按并松开。
类似 Hold,但是它在按住时间大于等于 Max Tap Duriation 的时候,并不会立刻触发 Performed,而是会在松开的时候才触发 Performed
MultiTap:连击。
用作于多次点击,例如双击或者三连击。
当每次点击时间小于 Max Tap Duration,且点击间隔时间小于 Max Tap Spacing,点击 Tap Count 次,触发 Performed。
Press:按下
可以实现类似按钮的操作
Press Only:按下的时候触发 Started和 Performed。不触发 Canceled
Release Only:按下的时候触发 Started,松开的时候触发 Performed
Press And Release:按下的时候触发 Started和 Performed,松开的时候会再次触发 Started和 Performed。不触发 Canceled
(3)Processors:值处理加工设置
对得到的值进行处理加工
Clamp:将输入值钳制到 [min,max] 范围。
Invert:反转控件中的值(即,将值乘以 -1)。
Invert Vector 2:反转控件中的值(即,将值乘以 -1)。
如果 invertX 为真,则反转矢量的 x 轴
如果 invertY 为真,则反转矢量的 y 轴。
Invert Vector 3:反转控件中的值(即,将值乘以 -1)。
如果反转 x 为真,则反转矢量的 x 轴
如果反转 y 为真,则反转 y 轴
如果反转 z 为真,则反转 z 轴
Normalize:
如果最小值 >= 0,则将 [min,max] 范围内的输入值规格化为无符号规格化形式 [0,1]
如果最小值 < 0,则将输入值规格化为有符号规格化形式 [-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)。在死区处理器上使用最小值可避免此类控件的无意输入。此外,当轴一直移动时,某些控件不一致地报告其最大值。在死区处理器上使用最大值可确保在这种情况下始终获得最大值。
(二)点击加号
Add Binding
添加新的输入绑定(单按键输入)
Add Positive \ Negative Binding
Or
Add 1D Axis Composite
添加 1D 轴组合(类似 Input 中的水平竖直热键,返回 -1 ~ 1 之间的一个值)
Add Up \ Down \ Left \ Right Composite
Or
Add 2D Vector Composite
添加 2D 向量组合(类似将 Input 中的水平竖直热键组合在一起,得到的 Vector 中的 x,y 分别表示两个轴)
Add Up \ Down \ Left \ Right \ Forward \ Backward Composite
添加 3D 向量组合
Add Button With One Modifier Composite
添加带有一个复合修改器的按钮(可以理解为双组合键, 比如 Ctrl + C、Ctrl + V)
Add Button With Two Modifier Composite
添加带有两个复合修改器的按钮(可以理解为三组合键,比如 Ctrl+ K + U)
创建绑定后,可以添加对应需要绑定的输入设备
Path:从哪个控件接受输入
[Header("Binding")] public InputAction move;
[Header("1D Axis")] public InputAction axis;
[Header("2D Vector")] public InputAction vector2D;
[Header("3D Vector")] public InputAction vector3D;
[Header("Button With One")] public InputAction btnOne;
// Start is called before the first frame update
void Start() {
// 1.启用输入检测
move.Enable();
// 2.操作监听相关
// 开始操作
move.started += TestFun;
// 真正触发
move.performed += context => {
print("触发事件调用");
// 3.关键参数 CallbackContext
// 当前状态
// 没有启用 Disabled
// 等待 Waiting
// 开始 Started
// 触发 Performed
// 结束 Canceled
// context.phase
print(context.phase);
// 动作行为信息
print(context.action.name);
// 控件(设备)信息
print(context.control.name);
// 获取值
//context.ReadValue<float>
// 持续时间
print(context.duration);
// 开始时间
print(context.startTime);
};
// 结束操作
move.canceled += (context) => { print("结束事件调用"); };
btnOne.performed += (context) => { print("组合键触发"); };
}
3月26日,映宇宙(HK:03700,即“映客”)发布截至2022年12月31日的2022年度业绩财务报告。财报显示,映宇宙2022年的总营收为63.19亿元,较2021年同期的91.76亿元下降31.1%。2022年,映宇宙的经营亏损为4698.7万元,2021年同期则为净利润4.57亿元;期内亏损(净亏损)为1.68亿元,2021年同期的净利润为4.33亿元;非国际财务报告准则经调整净利润为3.88亿元,2021年同期为4.82亿元,同比下降19.6%。 映宇宙在财报中表示,收入减少主要是由于行业竞争加剧,该集团对旗下产品采取更为谨慎的运营策略以应对市场变化。不过,映宇宙的毛利率则有所提升
如何用IDEA2022创建并初始化一个SpringBoot项目?目录如何用IDEA2022创建并初始化一个SpringBoot项目?0. 环境说明1. 创建SpringBoot项目 2.编写初始化代码0. 环境说明IDEA2022.3.1JDK1.8SpringBoot1. 创建SpringBoot项目 打开IDEA,选择NewProject创建项目。 填写项目名称、项目构建方式、jdk版本,按需要修改项目文件路径等信息。 选择springboot版本以及需要的包,此处只选择了springweb。 此处需特别注意,若你使用的是jdk1
文章目录问题B:芝华士威士忌和他的小猫咪们代码&注释问题C:愿我的弹雨能熄灭你们的痛苦代码注释问题D:猜糖果游戏代码注释问题E:有趣的次方代码注释问题F:这是一个简单题代码&注释问题G:打印矩阵代码注释问题H:scz的简单考验代码注释问题I:完美区间代码&注释问题J:是狂热的小迷妹一枚吖~代码&注释2022年10月23日周赛ZZULIOJ问题B:芝华士威士忌和他的小猫咪们时间限制:1Sec内存限制:128MB题目描述芝华士威士忌很喜欢带着他的猫咪们一块跑着玩。但是小猫咪们很懒,只有在离他y米以内才愿意和他一块跑。这天他在坐标为x的位置,他想和他的猫咪们一块跑着玩。有n个小猫咪,第i个小猫咪在坐
代码请进行一定修改后使用,本代码保证100%通过率,本题目提供了java、python、c++三种代码。复盘思路在文章的最后题目描述祖国西北部有一片大片荒地,其中零星的分布着一些湖泊,保护区,矿区;整体上常年光照良好,但是也有一些地区光照不太好。某电力公司希望在这里建设多个光伏电站,生产清洁能源对每平方公里的土地进行了发电评估,其中不能建设的区域发电量为0kw,可以发电的区域根据光照,地形等给出了每平方公里年发电量x千瓦。我们希望能够找到其中集中的矩形区域建设电站,能够获得良好的收益。输入描述第一行输入为调研的地区长,宽,以及准备建设的电站【长宽相等,为正方形】的边长最低要求的发电量之后每行为
https://cloud.189.cn/t/BJbYreYbmUj2(访问码:djz6)(网盘2022-4-1更新)一、刷入armbian。1.1使用AmlBurnTool软件烧录首选底包至固件。烧录完成后断开玩客云电源备用。(靠近hdmi的那个口子。)1.2使用WIn32diskimager软件将emmc固件写入U盘。1.3写入成功后,先将U盘插入玩客云靠近网线接口端的USB口,再接入电源。玩客云通电后指示灯会先亮绿灯,再亮蓝灯,红蓝闪烁,最后蓝灯常亮。等到确定蓝灯常亮后,再拔掉U盘、电源。(最好蓝灯常亮后,启动一次玩客云,看看ssh是否正常。)1.4使用WIn32diskimager写入
Ai-Bot基于流行的Node.js和JavaScript语言的一款新自动化框架,支持Windows和Android自动化。1、Windowsxpath元素定位算法支持支持Windows应用、.NET、WPF、Qt、Java和Electron客户端程序和ie、edgechrome浏览器2、Android支持原生APP和H5界面,元素定位速度是appium十倍,无线远程自动化操作多台安卓设备3、基于opencv图色算法,支持找图和多点找色,1080*2340全分辨率找图50MS以内4、内置免费OCR人工智能技术,无限制获取图片文字和找字功能。5、框架协议开源,除官方node.jsSDK外,用户可
问题描述小蓝负责一个公司的考勤系统,他每天都需要根据员工刷卡的情况来确定每个员工是否到岗。当员工刷卡时,会在后台留下一条记录,包括刷卡的时间和员工编号,只要在一天中员工刷过一次卡,就认为他到岗了。现在小蓝导出了一天中所有员工的刷卡记录,请将所有到岗员工的员工编号列出。输入格式输入的第一行包含一个正整数n,表示一天中所有员工的刷卡记录的条数。接下来n行,每行包含一条刷卡记录,每条刷卡记录的格式为:HH:MM:SSID其中HH:MM:SS表示刷卡时间,HH为一个0到23之间的两位十进制整数(可能含前导0)表示时,MM为一个0到59之间的两位十进制整数(可能含前导0)表示分,SS为一个0到59之间的
2022年山东省职业院校技能大赛高职组“信息安全管理与评估”赛项竞赛规程一、赛项名称赛项名称:信息安全管理与评估英文名称:InformationSecurityManagementandEvaluation赛项组别:高职组赛项归属:电子与信息大类二、竞赛目的(一)引领教学改革通过大赛引领专业教学改革,实现以赛促教、以赛促学、以赛促改的产教结合格局,提升专业培养服务社会和行业发展的能力,为国家信息安全行业培养选拔技术技能型人才。2022年信息安全管理与评估赛项延续历届赛项的竞赛内容,通过赛项检验参赛选手安全网络组建、按照等保要求加固网络系统、安全架构、渗透测试、攻防实战等技术能力,检验参赛队计划
2022年,FinClip团队进行了24个产品迭代,为了丰富FinClip的平台能力,除了核心SDK之外,我们还为开发者们提供了扩展SDK,扩展SDK是一个依赖核心SDK的库,里面提供了核心SDK中所没有的各种小程序API。官方希望通过丰富的扩展SDK库可以帮助开发者减少开发工作,把更多的精力用到实现业务上。那本期,小编就为大家推荐扩展SDK库中8个功能稳定又实用的SDK!(更多详细内容请点击)以下分享以AndroidSDK文件为例,您可登录 资源下载中心下载AndroidSDK文件,扩展SDK也处于在所下载的压缩包中。1、WeChatSDK微信SDK的快捷接入,提供调起微信通过微信小程序获得
2022年C++面试题【常问重点问题】`1、请你说说GET和POST的区别?``2、简述一下C++中的多态?``3、说一说进程有多少种状态,如何转换?``3、请你说说指针和引用的区别``4、简述一下虚函数的实现原理``5、说一说vector和list的区别,分别适用于什么场景?``6、什么是孤儿进程,什么是僵尸进程,如何解决僵尸进程``7、请你说说C++Lambda表达式用法及实现原理``8、请你说说innodb和myisam的区别``9、请你说说数据库的索引是什么结构,为什么不用哈希表?``10、虚析构函数有什么作用?``11、说一说常用的Linux命令?(常见)``12、简述一下堆和栈的区