论Unity_InputSystem如何使用(三)

news2025/1/12 4:10:50

PlayerInput

InputSystem提供专门用来处理玩家输入的组件,通过关联配置输入文件,可以不需要编写设备输入的相关逻辑,专注于编写输入触发后的逻辑。

如何添加

创建一个Cube,点击Add Component,搜索Player Input即可添加。

界面信息

在这里插入图片描述

Actions

用于关联输入配置文件,输入配置文件可以在Project窗口自主创建,然后进行关联。也可以直接点击Create Actions,会直接创建一个自带相关设置的输入配置文件。(我这里使用的Create Actions)
在这里插入图片描述
创建过后会出现这样的文件,双击打开。在这里插入图片描述

ActionMaps 行动地图窗口

多个Action的集合

Actions 输入动作窗口

和Inspector窗口里一样,只不过在右键出现的菜单中删除Action。

Action Properties

之前介绍过了

All Control Schemes

设置编辑器中显示哪些控制方案,需要自己手动添加,也可以自定义。
Gamepad:手柄
Joystick:摇杆
KeyboardMouse:键盘鼠标
Touch:触屏
XR:VR/AR等

All Devices:设备选择

筛选设备

Save Asset

保存配置

Auto-Save

自动保存配置

搜索栏

可以搜索对应动作行为
在这里插入图片描述
关联后会出现三个选项

Default Scheme

默认启用哪一种方案,键鼠、手柄等。

Auto-Switch

自带切换输入。比如一开始你使用键鼠输入,然后插上了手柄,则会自动变为手柄输入。

Default Map

默认使用的Action方案。

UI Input Module

UI输入模块。如果你想通过UI来控制,则可以创建并关联。

m在这里插入图片描述
在这里插入图片描述

Camera

关联摄像机,需要分屏时才需修改。

Behavior

通知游戏对象执行对应逻辑。

SendMessage

在脚本中申明“On加行为名的”的函数,无参或者参数类型为Input Value,将此脚本挂载在Player Input挂载的对象上,当触发对应输入时,会通过SendMessage通知执行对应函数。

BroadcastMessage

和Send Message规则基本一致,但脚本也可以挂载在子物体上,通过BroadcastMessage通知执行对应函数。

Invoke UnityEvent Actions

通过拖拽脚本关联函数指明想要执行的函数逻辑,但函数参数类型需要改为Input Action.CallbackContext。

Invoke CSharp Events

通过C#事件监听处理对应逻辑,通过获取PlayerInput进行事件监听。
首先需要获取Player Input组件,然后获取对应的事件进行委托函数添加,输入触发时自动调用函数。
public event Action<InputAction.CallbackContext> onActionTriggered,通常来说给这个事件添加委托函数。

三个默认的事件

设备丢失

玩家失去了一个设备,例如,手柄耗尽电池时
OnDeviceLost(PlayerInput input)

设备注册

当设备丢失,重新连接并再次运行时会触发,例如,重新连接手柄
OnDeviceRegained(PlayerInput input)

控制器切换

切换操作设备时
OnControlsChanged(PlayerInput input)

使用Invoke CSharp Events完成移动,跳跃功能。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;

public class NewBehaviourScript1 : MonoBehaviour
{
    public PlayerInput playerInput;
    public Rigidbody rigi;
    Vector3 dir;

    void Start()
    {
        playerInput.onActionTriggered += PlayerInput_onActionTriggered;
    }

    private void PlayerInput_onActionTriggered(InputAction.CallbackContext obj)
    {
        switch (obj.action.name)
        {
            case "Move":
                if(obj.phase == InputActionPhase.Performed)
                {
                    dir = new Vector3(obj.ReadValue<Vector2>().x, 0, obj.ReadValue<Vector2>().y);
                  
                }
                else if (obj.phase == InputActionPhase.Canceled)
                {
                    dir = Vector3.zero;
                }
                break;
            case "Jump":
                rigi.AddForce(Vector3.up * 100);
                break;
        }
    }

    // Update is called once per frame
    void Update()
    {
        rigi.AddForce (dir * 10);

    }
}

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

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

相关文章

【C语言 数据机构】时间复杂度与空间复杂度

文章目录时间复杂度空间复杂度时间复杂度 判断一个算法所编程序运行时间的多少&#xff0c;并不是将程序编写出来&#xff0c;通过在计算机上运行所消耗的时间来度量。原因很简单&#xff0c;一方面&#xff0c;解决一个问题的算法可能有很多种&#xff0c;一一实现的工作量无疑…

cocoapods安装失败到成功的记录贴

mac系统版本&#xff1a;10.15.5 (19F101) 最优解安装顺序&#xff1a;Xcode > HomeBrew > RVM > Ruby > CocoaPods 1. 安装方案1(百度常用法&#xff09; 1.1 更新gems和换国产源&#xff1a; RubyGems 镜像 - Ruby Chinahttps://gems.ruby-china.co…

使用VBA获取电脑MAC地址

实例需求&#xff1a;如何使用VBA读取电脑的MAC地址&#xff0c;包含有线网卡和无线网卡。 这个需求看似有些无厘头&#xff0c;为嘛要用VBA来读取MAC地址&#xff0c;存在的就是合理的。例如使用MAC地址和其他硬件信息可以生成电脑的唯一识别号&#xff0c;用于软件注册和实现…

Vue Node

Vue配置代理服务器 一、运行后台服务 启动后台Node服务器&#xff0c;运行后台程序&#xff0c;学习资料node代码&#xff0c;服务5000开启 FeHelper - Awesome 二、Ajax请求 xhr 【不常用】Windows 内部 new XMLHttpRequest()xhr.open() xhr.send()内部公司封装xhr开源封装…

力扣 2325. 解密消息

题目 给你字符串 key 和 message &#xff0c;分别表示一个加密密钥和一段加密消息。解密 message 的步骤如下&#xff1a; 使用 key 中 26 个英文小写字母第一次出现的顺序作为替换表中的字母 顺序 。 将替换表与普通英文字母表对齐&#xff0c;形成对照表。 按照对照表 替换…

OAuth2 01

目录 1.什么是OAuth 2.OAuth2中的角色 3.认证流程 4.生活中的OAuth2思维 5.令牌的特点 6.OAuth2的授权方式 6.1 OAuth2授权码 6.2 隐藏方式 6.3 密码方式 6.4 凭证方式 1.什么是OAuth2 1.OAuth2.0介绍 OAuth&#xff08;Open Authorization&#xff09;是一个关于授权&…

Android 抓包相关 SSL相关

https无法明文抓包 Android P版本开始强制App使用Https协议&#xff0c;否则访问崩溃如下所示错误&#xff1a; java.lang.ClassCastException: com.android.okhttp.internal.huc.HttpURLConnectionImpl cannot be cast to javax.net.ssl.HttpsURLConnection可参阅&#xff…

C 语言零基础入门教程(二十三)

C 可变参数 有时&#xff0c;您可能会碰到这样的情况&#xff0c;您希望函数带有可变数量的参数&#xff0c;而不是预定义数量的参数。C 语言为这种情况提供了一个解决方案&#xff0c;它允许您定义一个函数&#xff0c;能根据具体的需求接受可变数量的参数。下面的实例演示了…

Centos8中安装配置php

一、问题描述Centos8中我们在使用Apache部署配置网站的时候&#xff0c;发现Apache服务已经正常启动且网站也配置完成到Apache主目录中&#xff0c;但是访问时网站却不能正常运行【即&#xff1a;只能够以列表的方式列出所有网站的资源文件&#xff0c;而不是以网页的形式展现】…

关于荧光素76863-28-0,FITC-5-thiosemicarbazide,荧光素-5-氨基硫脲 相关知识分享

荧光素-5-氨基硫脲&#xff0c;Fluorescein-5-thiosemicarbazide&#xff0c;FITC-5-thiosemicarbazide荧光素-5-氨基硫脲是一种含胺的荧光探针&#xff0c;可用于标记糖和蛋白质羰基衍生物Product specifications&#xff1a;1.CAS No&#xff1a;76863-28-02.Molecular formu…

超越OCR的富文档内容解析神器LayoutParser

论文题目&#xff1a;《A unified toolkit for Deep Learning Based Document Image Analysis》 论文链接&#xff1a;https://arxiv.org/abs/2103.15348 论文官方网站&#xff1a;https://layout-parser.github.io/ 论文开源项目&#xff1a;https://github.com/Layout-Par…

Ubuntu 18.04安装配置MySQL数据库

文章目录1. 安装MySQL数据库2. 配置MySQL数据库3. 远程访问设置4. Navicat连接MySQL数据库1. 安装MySQL数据库 这里可以通过包管理工具apt安装MySQL数据库&#xff0c;在ubuntu18.04下mysql版本默认为5.7。 安装命令如下&#xff1a; sudo apt-get install mysql-server安装…

【Echarts雪花宝典特殊示例100+】 目录

目前已发表2篇示例文章vueecharts系列教程旨在为开发者提供简单快捷的代码示例&#xff0c;复制即可用。在每一个示例中&#xff0c;解释相应的API知识点&#xff0c;做到简易实现&#xff0c;轻松学会。 通常一个Echarts图表通常由title(标题)、legend(图例)、grid&#xff0…

ESP-IDF:插入排序和希尔排序测试

代码&#xff1a; /插入排序和希尔排序测试/ void printArray14(int arr[], int len) { for (int i 0; i < len; i) { cout << arr[i] << " "; } cout << endl; } void insertSort(int arr[], int start, int end) { // 无序插入有序队列&am…

BM19 寻找峰值

目录 描述 示例1 思路&#xff1a; 代码&#xff1a; 描述 给定一个长度为n的数组nums&#xff0c;请你找到峰值并返回其索引。数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回任何一个所在位置即可。 1.峰值元素是指其值严格大于左右相邻值的元素。严格…

专访三维空间雷成老师 | 原来水墨画风格的3D建筑动画可以如此惊艳……

CGarchitect 是业界赫赫有名的国际3D建筑赛事&#xff0c;2005年首次举办至今已成功举办了17届大赛&#xff0c;每年都吸引了全球许多知名的建筑设计工作室、动画工作室、艺术家及学生参赛。2021年的CGarchitect奖项类别包括图像组、影片组和交互组&#xff0c;其中图像组和影片…

【Rust】17. Rust 中的并发

17.1 线程 17.1.1 spawn&#xff1a;创建新线程 thread::spawn&#xff1a;创建一个新线程&#xff0c;需要传递一个闭包&#xff0c;并在其中包含希望在新线程运行的代码thread::sleep&#xff1a;调用强制线程停止执行一小段时间。比如&#xff1a;thread::sleep(Duration::…

深入理解MySql(一)MySql视图、存储过程、预处理语句、触发器、定时器

MySql视图、存储过程、预处理语句、触发器、定时器 1、视图 视图&#xff08;View&#xff09;是一种虚拟存在的表。视图中的数据并不在数据库中实际存在&#xff0c;行和列数据来自定义视图的查询中使用的表&#xff0c;并且是在使用视图时动态生成的。 视图只保存了查询的…

iOS面试- 0x02 WebView

有了UIWebView&#xff0c;为什么还需要WKWebView&#xff1f; UIWebVieW的缺点&#xff1a; 笨重难用、内存泄露、内存消耗大&#xff0c;性能差 —— WKWebView提高性能 WKWebView 拥有60fps滚动刷新率和safari相同的js引擎等优势。 1、WKWebView 白屏问题 WKWebView是一个多…

ElasticSearch6.x版本的Scroll滚动查询讲解及Kibana和SpringBoot实操演示

文章目录一、Scroll滚动查询介绍二、Kibana上操作三、SpringBoot中操作四、总结一、Scroll滚动查询介绍 ElasticSearch中在进行普通的查询时&#xff0c;默认只会查询出来10条数据。我们通过设置ElasticSearch中的size可以将最终的查询结果从10增加到10000。但这时候如果我们需…