admin管理员组文章数量:1589770
提示:文章有错误的地方,还望诸位大神不吝指教!
文章目录
- 前言
- 一、XRI Default Input Actions
- 1.导入官方案例
- 2.设置控制器绑定,如手柄、主/辅助按钮、操纵杆等
- 1.要设置控制器绑定,如左右手 手柄、主/辅助按钮、操纵杆等,请双击:XRI Default Input Actions
- 2.获取左手XY键事件(右手AB同理)
- 二、按键对应名称
- 三、代码示例
- 总结
前言
官方文档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
二、按键对应名称
三、代码示例
代码如下(示例):
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
}
}
}
总结
好记性不如烂笔头
版权声明:本文标题:Unity XR Interaction Toolkit设置或监听手柄按键事件(三) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1728075280a1144398.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论