unity XR里面手柄的API,我使用时候发现,只能返回是否按了的返回值,Trigger(扳机键)按住是一直返回true,我想要的抬起、按下没有对应的参数,我设计的管理模块对这些API进行了整理,能够获取按钮的抬起、按下的返回值。
设计了一个字典,初始化将需要使用到的按钮注册到字典当中,在UPdate中获取手柄信息,调用TryGetFeatureValue,获取每个按钮的按下的返回值。这里按下的意思是只要你按了就返回true,不区分按下、抬起、长按等,遍历字典里的按钮信息,pressed只要按了这个按钮既为true,第一次按下的时候就是buttondown为true(类似HTC),后续长按返回false。lastButtonState是上一次pressed的返回值,不相等的时候就是抬起的时候buttonup=true。
这个类可以设计成单例模式,调用Getfunction,参数就是手柄按钮的类型Inputstate枚举。
下面是相关代码,仅供参考。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR;
public enum Inputstate
{
menuL,
menuR,
/// <summary>
/// 左手柄扳机按键
/// </summary>
triggerL,
triggerR,
gripL,
gripR,
primaryL,
/// <summary>
/// 右手柄A
/// </summary>
primaryR,
/// <summary>
/// 左手柄B键
/// </summary>
secondaryL,
secondaryR,
}
public class function
{