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
        }
    }
}

总结

好记性不如烂笔头

相关推荐
NRatel2 小时前
Unity游戏打包——打包常见报错(含Android、iOS)
游戏·unity·游戏引擎
SmalBox1 天前
【渲染管线】UnityURP中[渲染路径]选择‌
unity·渲染
陈小峰_iefreer1 天前
使用Stone 3D快速制作第一人称视角在线小游戏
游戏引擎·元宇宙·three.js·web3d
Glunn2 天前
记住密码管理器
unity
17岁的勇气2 天前
Unity Shader unity文档学习笔记(二十一):几种草体的实现方式(透明度剔除,GPU Instaning, 曲面细分+几何着色器实现)
笔记·学习·unity
EQ-雪梨蛋花汤2 天前
【Unity&AS】Unity & Android Studio 联合开发快速入门:环境配置、AAR 集成与双向调用教程
unity·游戏引擎·android studio
Glunn2 天前
UI弹出动画
ui·unity
淡海水2 天前
【URP】Unity Shader Tags
unity·游戏引擎·渲染·shader·tag·urp
小清兔2 天前
c#基础知识
开发语言·数据库·学习·unity·c#·游戏引擎·.net