外置手柄、方向盘、XR设备、电笔等控制设备,在Unity中的输入
这篇文章总体定位是提供解决问题的思路,当你看到这篇文章的时候,相信已经参考了许多解决Unity控制输入问题相关的文章(不准的猜测哈)。本人也是在输入设备接入Unity的开发中遇到问题,走了许多弯路后,来总结这篇经验贴,分享一下个人经验。
1.个人在开发中遇到的问题:输入设备按键信号如何被Unity识别
纵所周知的,Unity输入管理器默认提供18个轴,可自行再增加几个,但如果遇到控制轴数超过限制的情况怎么办?本人在开发过程中接手到一套罗技G29,方向盘+变速器+油门离合踏板,远远超出了Unity控制器默认轴数,实机操作过程中,一些按键信号始终无法被Unity识别,其中就有方向盘上的D-pad键,为了识别到这些按键进行下一步功能开发,我考虑了在Unity输入管理器中新增轴(无法找寻到按键具体信号轴,无果)、官方下载硬件SDK(参考别人帖子,SDK中有可直接挂载的脚本,c++环境都不缺的情况下,脚本挂载后还是一直报错)等方法,依旧无法解决。
2.Unity识别设备输入信号问题的解决思路
本文是经验思路总结,遇到这类设备信号输入问题没解决,通常来说都是技术路线和思路有问题,比如上面我自己实践的新增输入控制轴、SDK等方法,都TM又臭又长还难搞,下次遇到这类问题,记住了,用Unity自带的Inupt System就可以搞定,没错,就这么简单。目前Inupt System的博文已经很多了,我就不做细致介绍了,个人比较懒,所以选择直接摆烂,只提供解决问题的思路,具体技术实现我只浅浅谈一下。
3.Inupt System的简单使用说明
之前都是用默认的输入管理器,没怎么关注Inupt System,第一次学习Inupt System的使用,这界面给我一种特别熟悉的感觉,这和动画状态机的设计十分类似,简单易上手。
3.1Inupt System的导入
窗口——包管理器——Unity注册表,找到Inupt System导入即可,这里插个其他话题,Inupt System还用于支持UI的输入,相信很多人不陌生,只是用它来识别设备信号输入的操作可能涉及得比较少。
3.2输入动作的新建
输入动作控制器的新建,在Assets文件下,新建——Input Actions即可
双击动作控制器,即可打开动作控制面板(和动画状态机类似)。
这个动作面板,第一栏时动作图层,下一级是具体的动作添加,一个动作图层下可添加多个动作,新建的动作需要自己绑定输入信号,当你不熟悉你的控制器信号时,直接点击Listen监听,监听状态下,Unity会把所有监听到的硬件输入给识别出来,识别自己需要的按键后,直接绑定信号就行。
3.3绑定信号的脚本事件触发
具体事件的触发代码如下,直接在场景需要交互的物体中挂载脚本即可。
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;public class Cube : MonoBehaviour
{PlayerControls controls;private void Awake(){controls = new PlayerControls();//实例化我新建的动作控制器controls.Gameplay.Up.performed += ctx => Up();//动作控制器——动作图层——具体动作——动作触发模式 => 触发函数事件,这里用的是lambda表达式}private void Up(){transform.localScale *= 1.1f; }private void OnEnable(){controls.Gameplay.Enable();}private void OnDisable(){controls.Gameplay.Disable();}// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){}
}
挂载好脚本,运行,触发硬件按钮,看看效果吧。
这里再给大家一篇帖子参考,里面对于动作的各类属性设置有详细的描述:(1条消息) 2022-09-09 Unity InputSystem3——InputAction_蔗理苦的博客-CSDN博客_unity inputaction
外置手柄、方向盘、XR设备、电笔等控制设备,在Unity中的输入相关推荐
- Esp8266 进阶之路32【高级篇】当esp8266遇到 Html,该怎么内置网页控制设备,理清内置网页的实现过程,实现无需路由器手机也可以控制esp8266。(附带固件)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. Esp8266之 搭建开发环境,开始一个"hello ...
- Android后门GhostCtrl,完美控制设备任意权限并窃取用户数据
Android系统似乎已经成为世界各地病毒作者的首选目标,每天都有新的恶意软件在感染更多的设备. 这一次,安全公司趋势科技发布警告,他们发现了一个新的Android后门--GhostCtrl Ghos ...
- C#之windows桌面软件第四课:串口助手控制设备的开关
串口助手控制设备的开关 using System; using System.Collections.Generic; using System.ComponentModel; using Syste ...
- 【学习笔记】第五章——I/O(设备分类、控制方式、软件层次结构、假脱机、缓冲)
文章目录 一. 设备分类与控制方式 1)设备分类 2)控制方式 1. 程序直接控制方式 2. 中断驱动方式 3. DMA 方式 4. 通道控制方式 总结 二. 软件层次结构与假脱机 1)软件层次结构 ...
- esp8266烧录Html文件,实现内置网页控制设备!
代码地址如下: http://www.demodashi.com/demo/14321.html 一.前言: 这个月也快结束了,时间真快,我服务器知识自学依然在路途中,这几天听到热点网页配置esp82 ...
- 可靠性测试设备技术含量_电气自动化控制设备的可靠性测试(1)
龙源期刊网 http://www.qikan.com.cn 电气自动化控制设备的可靠性测试 作者:彭波 来源:<消费电子 · 理论版> 2013 年第 10 期 摘 要:近年来电气自动化控 ...
- wifi7000米远程连接服务器失败,【电视派控制设备连wifi总失败 怎么办?】PjTime.COM 应用技巧 创维...
实用过创维酷开智能电视"电视派"功能的用户,大部分都可能会觉得很好用.不过,也有部分网友表示,在实际使用中碰到过,电视派控制设备连接wifi总是失败的现象.那么,出现这样的情况,我 ...
- 黑客或可完全控制设备,苹果紧急发布补丁!
8月20日,苹果公司报告了一个重大的安全漏洞,这些漏洞可能会让潜在的攻击者入侵用户设备.获得管理权限甚至完全控制设备并运行其中的应用软件. 据介绍,受本次漏洞影响的设备涵盖了几乎所有的苹果产品.其中手 ...
- 2022-2028全球与中国语音控制设备市场现状及未来发展趋势
本文研究全球及中国市场语音控制设备现状及未来发展趋势,侧重分析全球及中国市场的主要企业,同时对比北美.欧洲.中国.日本.东南亚和印度等地区的现状及未来发展趋势. 2021年全球语音控制设备市场销售额 ...
最新文章
- [转]文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)实现汇总1
- 博客作业05--查找
- [转]VirtualBox下RedHat 5.4 使用DVD光盘作为yum源
- 字典、列表、元祖、字符串的综合(2)
- json格式数据,将数据库中查询的结果转换为json, 然后调用接口的方式返回json(方式一)...
- centos svn 的搭建
- 刷爆了!李彦宏:这类程序员我给100万!你怎么看?
- 滤波器设计软件_滤波器设计——电路仿真软件的滤波器参数提取(下)
- 别看人家日子过得很轻松的样子,实际都很难,相信吗?
- NO.164 禅道的自定义功能:导航和主页的自定义
- python实现不同图像数据的叠加处理、实现多张图像数据以子图形式组合为新的图像数据【图像叠加、图像组合】
- 《Java程序设计》期末复习资料
- 《代码整洁之道》精读与演绎----毛星云
- ASP.NET Core 和 EF Core 系列教程——入门
- 物联网NB-IoT技术商用正全面铺开 竞争日趋激烈
- win10 任务管理器、注册表编辑被禁用如何解决? -伽卡他卡禁用任务管理器
- 支付宝手机网站支付出现系统繁忙,请稍后再试
- c语言编程期刊论文管理系统,C语言编程下计算机软件论文
- GrowingIO 数据采集 iOS SDK 测试实践
- Linux:for语句的基本用法举例