当前位置:   article > 正文

XR Interaction Toolkit 使用 新输入系统 自定义按钮事件_openxr xr interaction toolkit 配置meau按钮事件

openxr xr interaction toolkit 配置meau按钮事件

XR Interaction Toolkit 使用 新输入系统 自定义按钮事件

在网上找了好久,讲新输入系统的没几个,使用XR Interaction Toolkit的更少,自己来一个吧

第一件事,导包


完整版
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.InputSystem;
using DG.Tweening;
using Unity.VisualScripting;
using UnityEngine.UIElements;

简洁版
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
using Unity.VisualScripting;

DG.Tweening是Dotween的包,可以不管他,
如果没用到UI的话,UI类的包也别导入了

第二件事,增加新输入系统变量

public InputActionProperty AActionProperty;
private InputAction AAction;
  • 1
  • 2

在Start中

 void Start()
    {
        pinchAction = pinchActionProperty.action;
        AAction= AActionProperty.action;
    }
  • 1
  • 2
  • 3
  • 4
  • 5

最后在Update中做处理

直接举例子好了
下面以Select事件做完整版例子

public class A : MonoBehaviour
{
    public InputActionProperty AActionProperty;
    private InputAction AAction;
    bool isSelectOK = true;
    // Start is called before the first frame update
    void Start()
    {
        AAction= AActionProperty.action;
    }

    // Update is called once per frame
    void Update()
    {
        if (isSelectOK)
        {
            if (AAction.ReadValue<float>() == 1)
            {
                isSelectOK = false;
                StartCoroutine(setSelectOkValue(0.6f));
                aabbcc();
            }
        
        }
     }
         public void aabbcc()
    {
	}
         IEnumerator setSelectOkValue(float a)
    {
        yield return new WaitForSeconds(a);
        isSelectOK = true;
    }
    }
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

在Unity编辑器里
在这里插入图片描述

上面代码的意思是当isSelectOK为true时,接收AAction的数据,当接收到AAction的输入时(值为1)
将isSelectOk设置为负,取消接收AAction的数据
然后启动协程,等待0.6秒后,再将isSelectOK设置为true,继续接收AAction的数据,相当于是给输入增加了个0.6秒的冷却时间

将需要的功能加入到aabbcc()里面就好

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号