论Unity_InputSystem如何使用(一)

news2024/10/9 18:17:12

一、导入

在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窗口编辑在这里插入图片描述

首先点击齿轮符号

在这里插入图片描述

Action——输入动作设置,设置检测哪些设备输入。

在这里插入图片描述

Action Type——动作类型:

  • Value——值类型,主要用于状态连续更改的输入设备,如鼠标移动,手柄遥感。若有多个设备绑定此Action,只会发送最受控制的输入。

  • Button——按钮类型,处理按下类型。

  • PassThrough——直通类型,与Value一样,但如果有多个设备绑定,会发送所有设备的输入。

在这里插入图片描述

  • Control  Type——控制类型: 在这里选择你想要的设备按键返回值的类型,之后在选择对应设备按键时会根据你选择的内容进行筛选。

Interaction——相互作用设置,对特殊输入进行处理,如长按,多次点击等,满足条件时才会触发(设置长按时间,点击次数等)。

在这里插入图片描述

Hold

在这里插入图片描述

  • Press Point:在Input System中,每个按键都有对应的浮点值,例如普通的按键,将会在0(未按下)和1(按下)之间,当大于等于这个值时则认为按键按下。
  • Hold Time 当按钮按下会触发started,若在松开按钮前,按住时间大于等于Hold Time则会触发performed,否则触发canceled。

MultiTap

在这里插入图片描述

多次点击,例如双击或者三连击。

  • Tap Count为点击次数。
  • Max Tap Spacing为每次点击之间的间隔(默认值为 2 * Max Tap Duration)。
  • Max Tap Duration为每次点击的持续时间,即按下和松开按键的这段时间。 当每次点击时间小于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

SlowTap

在这里插入图片描述

  • 在按键按住时间大于等于Max Tap Duriation时,松开按键触发performed

Tap

在这里插入图片描述

  • 当按键按下会触发started,若在Max Tap Duriation时间内(小于)松开按钮,触发performed,否则触发canceled。

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
如果最小值>=零,则将[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)。在死区处理器上使用最小值可避免此类控件的无意输入。此外,当轴一直移动时,某些控件不一致地报告其最大值。在死区处理器上使用最大值可确保在这种情况下始终获得最大值。

点击+号

在这里插入图片描述

  1. 添加单个按钮绑定
  2. 添加1D轴组合,就是1到-1。
  3. 2D轴
  4. 3D轴
  5. 添加双组合键,如Ctrl+Z
  6. 添加三组合键,如Shift+Win+S;

添加之后双击它们
在这里插入图片描述

1D Axis

在这里插入图片描述

  • 负和正值

在这里插入图片描述

Composite Type

在这里插入图片描述

  1. Min Value和Max Value则是正负值的界限。
  2. Which Side Win则是当代表正负的键同时按下时哪一方获胜

在这里插入图片描述

2D Vector

在这里插入图片描述

  • 上(0,1)下(0,-1)左(-1,0)右(1,0)

在这里插入图片描述

  1. Mode 处理模式
  2. Analog——模拟值,浮点值
  3. DIgital Normalized——单位化向量
  4. Digital——向量

3D Vector

  • 与2D相同

One Modifier

在这里插入图片描述

  • 如Ctrl+V,Modifier代表Ctrl,Button代表V。
  • Two Modifier

在这里插入图片描述

  • 如Shift+Win+S,Modifier1代表Ctrl,Modifier2代表Win,S代表Button

三、InputAction的一些使用代码

首先我们需要启用输入检测
然后其拥有三种事件——开始,触发,结束
这些拥有一个参数,通过这个参数我们可以获得相关信息
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");
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/190958.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【虚拟现实】密西根大学 AR/VR/MR/XR 课程笔记

AR/VR/MR/XRModule 1 of 4: XR Terminology & ApplicationsVR and ARMixed RealityXRXR technology landscapeModule 1 of 4: XR Terminology & Applications 本模块将建立围绕 XR 的不同概念&#xff0c;并提供相关技术的简要概述。 了解 AR、VR 和 MR 的潜力和局限性…

RPA自动化办公05——Uibot自动抓取网页数据

参考&#xff1a;数据获取和处理_UiBot开发者指南 Python爬虫要对网页文件结构有一定了解&#xff0c;而且写程序一点一点把数据弄出来也很麻烦。 但是Uibot爬取数据是很简单的。 全部流程不过几步&#xff0c;本次爬取某东手机商品的信息&#xff1a; 电商数据爬取 网页长…

VR视频加密SDK方案一机一码

VR视频比传统的平面视频给用户带来更好的体验&#xff0c;而且现在在教育、娱乐等领域VR类视频也越来越多。相比传统的视频制作&#xff0c;VR视频的成本要更高&#xff0c;所以重视VR视频的版权保护提升安全性&#xff0c;是很多VR内容制作商不得不考虑的问题。那么VR视频加密…

【Scipy】菲涅尔积分和羊角螺线

文章目录菲涅尔积分简介复数域的菲涅尔积分羊角螺线菲涅尔积分简介 菲涅尔积分一般被写为S(x)S(x)S(x)和C(x)C(x)C(x)&#xff0c;定义为 S(x)∫0xsin⁡(t2)dt∑n0∞(−1)nx4n3(2n1)!(4n3)C(x)∫0xcos⁡(t2)dt∑n0∞(−1)nx4n1(2n)!(4n1)S(x)\int^x_0\sin(t^2)\text dt\sum^\i…

SpringBoot中如何优雅的使用多线程

本文带你快速了解Async注解的用法&#xff0c;包括异步方法无返回值、有返回值&#xff0c;最后总结了Async注解失效的几个坑。 在 SpringBoot 应用中&#xff0c;经常会遇到在一个接口中&#xff0c;同时做事情1&#xff0c;事情2&#xff0c;事情3&#xff0c;如果同步执行的…

【翻译】为深度学习购买哪种GPU: 我在深度学习中使用GPU的经验和建议

文章目录概述GPU是如何工作的&#xff1f;对深度学习处理速度最重要的GPU规格张量核心没有张量核心的矩阵乘法使用张量核心的矩阵乘法带有张量核心和异步拷贝的矩阵乘法&#xff08;RTX 30/RTX 40&#xff09;和TMA&#xff08;H100&#xff09;内存带宽二级缓存/共享内存/一级…

服务器遭受cc攻击的处置策略

如果服务器遭到了CC攻击&#xff0c;你可以采取以下措施来解决问题&#xff1a;使用防火墙和安全组进行限制&#xff1a;限制服务器的流量以防止进一步的攻击。升级服务器资源&#xff1a;为了应对更高的流量&#xff0c;可以升级服务器的内存&#xff0c;处理器等资源。安装防…

字节跳动青训营--前端day5

文章目录前言一、初识HTTP拓展—输入地址到页面渲染发生了哪些事情二、协议分析1.发展2.报文2.1 请求报文&#xff1a;请求行&#xff1a;请求头主体2.2 响应报文&#xff1a;状态行响应头响应正文2.3缓存3.发展3.1 Http23.2 Https前言 仅以此文章记录学习历程 一、初识HTTP …

kubernetes核心概念 Service

kubernetes核心概念 Servicekubernetes核心概念 Service一、 service作用二、kube-proxy三种代理模式2.1 UserSpace模式2.2 iptables模式2.3 ipvs模式2.4 iptables与ipvs对比三、 service类型3.1 service类型3.2 Service参数四、 Service创建4.1 ClusterIP类型4.1.1 普通Cluste…

1月安全月报 | 2亿Twitter用户数据被公开;美计划发起“黑掉五角大楼3.0”漏洞赏金计划

目录 国外安全热点 &#x1f449;安全政策 &#x1f449;数据安全 &#x1f449;市场趋势 &#x1f449;勒索事件 国内安全热点 &#x1f449;数据安全 &#x1f449;业务安全 &#x1f449;移动安全 &#x1f449;网安政策 为了让大家更全面的了解网络安全的风险&am…

精读JavaScript中的代理(Proxy)与反射(Reflect)

目录 定义与概念 属性及函数 Proxy Reflect 使用场景 如何实现 实现过程 运行效果 应用限制及优点 写在最后 定义与概念 JavaScript中的Proxy与Reflect是ES6中引入的新特性&#xff0c;它们可以帮助我们更高效地控制对象。 代理&#xff08;Proxy&#xff09;是一种…

元宇宙哪些吓死人的概念话题

元宇宙哪些吓死人的概念话题 深层的奥秘&#xff1a;人是符号及符号的意义驱动的 趣讲大白话&#xff1a;现有概念再有东西 ************** **元宇宙与跨学科 2.1 元宇宙与交叉学科 2.2 元宇宙与哲学 2.3 元宇宙与文学 2.4 元宇宙与艺术学 2.5 元宇宙与电影学 2.6 元宇宙与传播…

【面向对象】构造函数与析构函数详解

构造函数与析构函数详解 文章目录构造函数类型参考博客&#x1f60a;点此到文末惊喜↩︎ 构造函数 类型 默认构造函数&#xff08;缺省构造函数&#xff09; 一个类中只能出现一个默认构造函数在调用时&#xff0c;不需要传入实参。因为默认构造函数通常是无参的或所有形参都…

射频信号探测器制作

射频信号探测器制作一、元件要求二、芯片参数三、原理剖析四、实验思路五、实物展示、使用六、个人总结一、元件要求 CD4001&#xff0c;是四2输入或非门。或非门的逻辑关系特点是只有当输入端全部为低电平时&#xff0c;输出端为高电平状态&#xff1b;在其余输入情况下&…

TCP-IP协议基础知识

1、简介 tcp/ip&#xff1a;通信协议的统称&#xff0c;是IP,ICMP,TCP,UDP,HTTP,TELNET,SNMP,SMTP等协议的集合 TCP/IP和OSI的关系 OSI属于ISO&#xff08;国际化标准组织&#xff09;制定的通信系统标准&#xff0c;但是并没有普及&#xff1b;TCP/IP是非ISO制定的某种国际…

详谈ORB-SLAM2的局部建图线程LocalMapping

ORB-SLAM2的局部建图线程LocalMapping分为5个步骤&#xff0c;非常简单。当得到缓冲队列里的关键帧&#xff0c;第一步处理当前关键帧的地图点关系等&#xff1b;第二步判断地图点是否为新创建&#xff0c;如果是那就进入测试&#xff0c;测试地图点的好坏&#xff0c;如果不好…

【关于Linux中----信号】

文章目录一、信号入门1.1 信号概念1.2 用 kill-l命令查看信号列表1.3 信号处理常见方式预览二、产生信号2.1 通过终端按键产生信号2.2 由于程序中存在异常产生信号2.3 系统接口调用产生信号2.4 软件条件产生信号三、阻塞信号3.1 信号相关常见概念补充3.2 在内核中的表示3.3 sig…

编码技巧——JDK版本切换/JDK7和JDK6下的文件输入输入

最近有使用低版本JDK实现文件输入输出的需求&#xff0c;主要是妹子计算机专业考研复试上级算法题&#xff0c;输入输入依赖文件而非纯算法代码&#xff0c;并且IDE一般使用JDK8以下的SDK&#xff0c;导致一些JDK8的API不适用&#xff1b;较早版本的JDK API代码是操作一大堆的缓…

jenkins部署过程

Jenkins 安装 示例服务器为 阿里云 CentOS 服务器。安全组中增加 8080 端口 Jenkins 默认占用 Jenkins 安装大体分两种方式&#xff0c;一种使用 Docker 另一种则是直接安装&#xff0c;示例选择后者。不管使用哪种方式安装&#xff0c;最终使用层面都是一样的。 Linux安装过…

Linux下源码安装nginx

一 安装步骤 nginx在linux下的源码安装&#xff0c;步骤还是比较简单的&#xff0c;主要分为以下 1. 下载安装包&#xff0c;这里选择&#xff1a;nginx-1.18.0.tar.gz 下载地址&#xff1a;http://nginx.org/en/download.html 2. 安装前置环境&#xff1a; yum install -y…