外置手柄、方向盘、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 update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

 挂载好脚本,运行,触发硬件按钮,看看效果吧。

        这里再给大家一篇帖子参考,里面对于动作的各类属性设置有详细的描述:(1条消息) 2022-09-09 Unity InputSystem3——InputAction_蔗理苦的博客-CSDN博客_unity inputaction

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值