Unity新输入系统 之 InputAction(输入配置文件最基本的单位)

news2024/11/25 6:28:25

本文仅作笔记学习和分享,不用做任何商业用途

本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正​

首先你应该了解新输入系统的构成结构:Unity新输入系统结构概览-CSDN博客

Input System - Unity 手册

1.InputAction概览

还是需要强调,InputAction中定义了所有的输入手势,是用来配置输入的基本单位

声明一个变量

 public InputAction inputaction;

 

2.预配置选项(齿轮)

Unity's new Input system Beginners Guide - VionixStudio

2.1 Action Type

动作类型可以自己选择响应方式,我也理解为模拟量化方式

比如键盘上的案件你总不可能用value来处理,显然是buttron表示一次的按键事件,而鼠标的点击肯定是用value来模拟,不然怎么处理连续的拖动呢?

2.2 Control Type

2.3 Interactirons

交互方式,非常简单就是长按,多按,压按,慢按,点按触发

如果想要设置详细信息或者配置更多的内容,可以open input settings里有一大堆可以设置的参数

2.4 Processors

后处理,该处就是将动作类型设置的返回值通过一定方式处理并再次返回出去

3.Binding(绑定按键)

当然添加绑定方式也受到Acrtion Type和Control Type影响

当我如下设置时,会出现上下左右键的组合绑定

如下设置时,则会前后左右键的组合绑定

双击空的绑定事件,可以自己选择输入方式的具体内容,比如我就拿键盘的wasd举例

双击2D vector可以看到其部分参数

4.代码与事件

Class InputAction | Input System | 1.6.1 (unity.cn)

为了举例我绑定了一个button的鼠标左键事件

最最开始,可以使用Enable方法启用输入检测

开始,触发与结束事件

查看源码可以看到started事件类型是一个泛型的有参无返回值的Action

(C# 事件-CSDN博客)

so,我们可以创建一个CallbackContext参数的函数,或者直接lambda表达式

public class inputContral : MonoBehaviour
{
    public InputAction mouseClick;
    public InputAction inputaction;

    void Start() 
    {
        mouseClick.Enable();
        mouseClick.started+=(cacllbake)=>
        {
        print("进入事件,鼠标点下去了");
        };
        mouseClick.performed += func;
        mouseClick.canceled += (cacllbake) => {
            print("结束事件,鼠标抬起来了");
        };
        
    }

    private void func(CallbackContext callbackContext) {
        print("触发了事件,鼠标按下途中");     
    }

下面则是之前的wasd的vector2的栗子

移动控制ReadValue<>();

public class InputControl : MonoBehaviour {
    public InputAction inputaction;

    private void Start() {
        inputaction.Enable();
        inputaction.performed += OnInputPerformed;
    }

    private void OnInputPerformed(InputAction.CallbackContext context) {
        Vector2 inputVector = context.ReadValue<Vector2>();
        float ws = inputVector.y;

        if (ws > 0) {
            Debug.Log("W key pressed");
        }
        else if (ws < 0) {
            Debug.Log("S key pressed");
        }
    }
}

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

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

相关文章

创客匠人媛姐:做得一切都是为了拿到结果!

大家好&#xff0c;我是媛姐。近期我做了《百场IP发售销讲实战宣讲-发售教练点评》的直播活动。邀请了艺得世界人才创造社白钰玮老师为大家现场演练一场销讲&#xff0c;展示发售销讲私教班的培训成果。结果证明&#xff0c;白老师完成得非常出色。 以下&#xff0c;我将分享一…

WPF APP生命周期和全局异常捕获

应用启动事件与启动参数 属性查找 选择想要控件的事件&#xff0c;可以在控件上鼠标右击选择属性&#xff0c;在右上角点击闪电符号即可看到这个控件的所有事件&#xff1a; APP.Run()启动方法&#xff1a; 打开项目中这个文件&#xff1a; ".....\XH.EventLesson\obj…

Chapter 9 Operational Amplifiers

Chapter 9 Operational Amplifiers operational amplifier (op-amp) 运算放大器无疑是模拟电路中最基础最重要的block之一. 这一章我们首先review telescopic and folded-cascode 拓扑, 然后学习two-stage and gain-boosting 结构, 和共模反馈问题, 最后引入slew rate, 分析su…

基于Python、Django开发Web计算器

1、创建项目 创建Django项目参照https://blog.csdn.net/qq_42148307/article/details/140798249&#xff0c;其中项目名为compute&#xff0c;并在该项目下创建一个名为app的应用&#xff0c;并且进行基本的配置。 2、导入Bootstrap前端框架 Bootstrap的使用参照https://blo…

【项目分享】使用python的ttkbootstrap模块构建一个炫酷的计时器

目录 前言 项目背景 项目展示(图片) 项目实现 1. 安装与设置 2. 创建主窗口 3. 初始化计时器功能 4. 实现计时功能 5. 实现隐藏边框与置顶功能 6. 运行应用 完整代码 结论 🌟 嗨,我是命运之光! 🌍 2024,每日百字,记录时光,感谢有你一路同行。 🚀 携…

TCP详解(二)滑动窗口/流量控制

本文解释了TCP为何能保证数据传输的可靠性&#xff0c;以及如何保证整个网络的顺畅。 1 网络分层模型 这是一切的本质。网络被设计成分层的&#xff0c;所以网络的操作就可以称作一个“栈”&#xff0c;这就是网络协议栈的名称的由来。在具体的操作上&#xff0c;数据包最终形…

tcpdump入门——抓取三次握手数据包

1. 使用docker启动一个tcp应用 参考&#xff1a;https://blog.csdn.net/LONG_Yi_1994/article/details/141175526 2. 获取容器id docker ps |grep gochat 3. 获取容器的 PID 首先&#xff0c;你需要获得容器的进程 ID&#xff08;PID&#xff09;。可以使用 docker inspect…

kafka下载|安装

1、下载kafka https://kafka.apache.org/downloads 2、安装kafka 解压下载的kafka安装包即可 tar -xvf kafka_2.13-3.7.0.tgz -C /usr/local/3、查看kafka目录 bin目录&#xff1a;存放了脚本 config目录&#xff1a;主要存放了配置文件

Pytest-BDD流程性接口测试和自定义测试报告

引言 上篇文章《Pytest-BDD实现接口自动化测试&#xff0c;并附全部代码》我们介绍了怎么使用Pytest-BDD实现接口自动化测试&#xff0c;本篇文章主要介绍怎么去做流程性接口测试和自定义测试报告相关内容。 流程性接口测试 流程性接口测试&#xff0c;指的是一个业务流需要…

【九芯电子】智能声控台灯语音模块,低成本语音识别芯片

在当今数字化时代&#xff0c;智能家居已经逐渐成为现代生活中的一部分。从温度调节到安全监控&#xff0c;我们对家居设备的控制已经更加便捷。然而&#xff0c;随着生活节奏的加快&#xff0c;用户对于更便捷的家庭控制方式的需求也在不断增加。针对这一关键的问题&#xff0…

HBO引爆血腥浪漫,尺度全开必看的影视剧推荐

一直以来我们的僵尸题材电影风靡全国&#xff0c;同时西方也创作出吸血鬼题材、丧尸题材的影视剧也是层出不穷&#xff0c;那今天我们就来探讨下吸血鬼题材的影视剧。 吸血鬼题材的影视剧&#xff0c;一直以来都是观众的宠儿。从光鲜亮丽的《暮光之城》到狗血多角恋的《吸血鬼日…

河北移动:核心系统数据库成功完成整体迁移 ,实现全栈国产|OceanBase案例

本文作者&#xff1a;移动通信集团河北有限公司架构规划专家&#xff0c;房瑞 项目背景&#xff1a; 中国移动通信集团河北有限公司一直在积极响应国家及集团的号召&#xff0c;以磐舟&磐基云原生为底座&#xff0c;结合国产浏览器、中间件、数据库、操作系统和服务器等&a…

树莓派4b无法选择声音输入输出设备问题

问题一&#xff1a;选择不了3.5mm音频输出口&#xff0c;也看不到音频输入设备 运行命令 &#xff1a;pactl load-module module-udev-detect tsched0 pactl load-module 命令用于在运行时加载新的模块。module-udev-detect 是PulseAudio的一个模块&#xff0c;它负责自动检测系…

【kubernetes】k8s对外服务之Ingress

一、Ingress介绍 1、Ingress的简介 K8S集群外部的客户端访问K8S集群内部的方案 基于Service实现&#xff1a;NodePort、LoadBalancer、externalIPs 只能支持四层代理转发&#xff0c;如果K8S集群规模较大运行的业务服务较多&#xff0c;NodePort端口/externalIPs管理成本…

Python套接字综合应用(UDP篇)

Python套接字综合应用(UDP篇) 1、 主要功能 UDP客户端实现UDP服务端实现输出字体颜色控制响应捕获键盘CtrlC信号套接字异常捕获及处理通信报文16进制格式化输出 2、 Python UDP套接字应用 Windows程序在WinServer2022上验证运行&#xff0c;Linux程序在银河麒麟V10上验证运…

[Java]面向对象-抽象类/方法接口适配器设计模式

抽象类 一个类中如果存在抽象方法&#xff0c;那么该类就必须申明为抽象类 定义格式&#xff1a; 如果一个类包含抽象方法&#xff0c;那么该类必须是抽象类。注意&#xff1a;抽象类不一定有抽象方法&#xff0c;但是有抽象方法的类必须定义成抽象类。 abstract class 类名…

haproxy七层代理详解之-完整安装部署流程及负载均衡实现-及热更新方法

一.负载均衡 1.1负载均衡时什么 负载均衡:Load Balance&#xff0c;简称LB&#xff0c;是一种服务或基于硬件设备等实现的高可用反向代理技术&#xff0c;负载均网络流量等)分担给指定的一个或多个后端特定的服务器或设备&#xff0c;从而提高了衡将特定的业务(web服务、公司…

嵌入式生物打印是什么?有啥优势?

大家好&#xff0c;今天我们来了解一下这篇《Embedded 3D bioprinting–An emerging strategy to fabricate biomimetic & large vascularized tissue constructs》发表于《Bioactive Materials》的一篇综述&#xff0c;在组织工程和再生医学领域&#xff0c;传统方法存在一…

【JUC】04-synchronized关键字

1. 悲观锁与乐观锁 悲观锁&#xff1a;认为自己在使用数据的时候一定会有别的线程来修改数据&#xff0c;因此在获取数据的时候会先加锁&#xff0c;确保数据不会被别的线程修改。synchroized和Lock的实现类都是乐观锁&#xff1a;认为自己在使用数据时不会有别的线程修改数据…

激光尘埃粒子计数器在洁净室监测中的关键应用(原理、类型、选型)

激光尘埃粒子计数器的应用 激光尘埃粒子计数器广泛应用于多个领域&#xff0c;包括但不限于&#xff1a; 权威机构&#xff1a;如血液中心、防疫站、疾控中心、质量监督所等。 生产企业和科研部门&#xff1a;如电子行业、制药车间、半导体、光学或精密机械加工、塑胶、喷漆…