Unity XR Interaction Toolkit设置或监听手柄按键事件(三)

提示:文章有错误的地方,还望诸位大神不吝指教!

文章目录


前言

官方文档Input System:链接: Input System

安装部分:链接: Unity XR Interaction Toolkit的安装(二)

一、XRI Default Input Actions

1.导入官方案例

需要导入官方案例:Starter Assets,方便学习

2.设置控制器绑定,如手柄、主/辅助按钮、操纵杆等

1.要设置控制器绑定,如左右手 手柄、主/辅助按钮、操纵杆等,请双击:XRI Default Input Actions
2.获取左手XY键事件(右手AB同理)

选择顺序 XR Controller-->XR Controller (RightHand)或者XR Controller(LeftHand)-->Usage



二、按键对应名称

三、代码示例

代码如下(示例):

csharp 复制代码
using UnityEngine;
using UnityEngine.InputSystem;

namespace TWQ
{
    public class MenuManage : MonoBehaviour
    {
        public InputActionReference MyLeftButton_X;
        public InputActionReference MyLeftButton_Y;

        public InputActionReference MyRightButton_X;
        public InputActionReference MyRightButton_Y;

        private void OnEnable()
        {
            SetupInteractorEvents();
        }
        private void OnDisable()
        {
            TeardownInteractorEvents();
        }
        void SetupInteractorEvents()
        {
            //左手
            var MyLeftButton_X_Action = GetInputAction(MyLeftButton_X);
            if (MyLeftButton_X_Action != null)
            {
                MyLeftButton_X_Action.performed += OnMyLeftButton_X_Action;
            }
            var MyLeftButton_Y_Action = GetInputAction(MyLeftButton_Y);
            if (MyLeftButton_Y_Action != null)
            {
                MyLeftButton_Y_Action.performed += OnMyLeftButton_Y_Action;
            }
            //右手
            var MyRightButton_X_Action = GetInputAction(MyRightButton_X);
            if (MyRightButton_X_Action != null)
            {
                MyRightButton_X_Action.performed += OnMyRightButton_X_Action;
            }
            var MyRightButton_Y_Action = GetInputAction(MyRightButton_Y);
            if (MyRightButton_Y_Action != null)
            {
                MyRightButton_Y_Action.performed += OnMyRightButton_Y_Action;
            }

        }
        void TeardownInteractorEvents()
        {
            var MyLeftButton_X_Action = GetInputAction(MyLeftButton_X);
            if (MyLeftButton_X_Action != null)
            {
                MyLeftButton_X_Action.performed -= OnMyLeftButton_X_Action;
            }
            var MyLeftButton_Y_Action = GetInputAction(MyLeftButton_Y);
            if (MyLeftButton_Y_Action != null)
            {
                MyLeftButton_Y_Action.performed -= OnMyLeftButton_Y_Action;
            }
        }

        /// <summary>
        /// 左手X键
        /// </summary>
        /// <param name="context"></param>
        private void OnMyLeftButton_X_Action(InputAction.CallbackContext context)
        {
            Debug.Log("按下左手X键--------------------");
        }
        /// <summary>
        /// 左手Y键
        /// </summary>
        /// <param name="context"></param>
        private void OnMyLeftButton_Y_Action(InputAction.CallbackContext context)
        {
            Debug.Log("按下左手Y键--------------------");
        }


        /// <summary>
        /// 右手X键
        /// </summary>
        /// <param name="context"></param>
        private void OnMyRightButton_X_Action(InputAction.CallbackContext context)
        {
            Debug.Log("按下右手A键--------------------");
        }
        /// <summary>
        /// 右手Y键
        /// </summary>
        /// <param name="context"></param>
        private void OnMyRightButton_Y_Action(InputAction.CallbackContext context)
        {
            Debug.Log("按下右手B键--------------------");
        }

        static InputAction GetInputAction(InputActionReference actionReference)
        {
#pragma warning disable IDE0031 // Use null propagation -- Do not use for UnityEngine.Object types
            return actionReference != null ? actionReference.action : null;
#pragma warning restore IDE0031
        }
    }
}

总结

好记性不如烂笔头

相关推荐
Hody911 天前
【XR技术介绍】Inside-Out Tracking:为何成为主流?核心技术:视觉SLAM原理通俗解读
xr
一个小狼娃1 天前
Android集成Unity避坑指南
android·游戏·unity
极客柒1 天前
Unity 协程GC优化记录
java·unity·游戏引擎
黄思搏1 天前
Unity SpriteRenderer 进度条 Shader 实现
unity·游戏引擎
猫屋小鱼丸1 天前
手把手教你在unity中实现一个视觉小说系统(一)
unity
国服第二切图仔1 天前
Rust开发实战之简单游戏开发(piston游戏引擎)
开发语言·rust·游戏引擎
HahaGiver6662 天前
Unity与Android原生交互开发入门篇 - 打开Unity游戏的设置
android·unity·交互
@LYZY2 天前
Unity TextMeshPro 文本对齐方式详解
unity·游戏引擎·textmeshpro·tmp
在路上看风景2 天前
2.1 ShaderLab - 渲染状态
unity
AA陈超2 天前
虚幻引擎5 GAS开发俯视角RPG游戏 P07-06 能力输入的回调
c++·游戏·ue5·游戏引擎·虚幻