HTC VIVE丨6. VR中的UI交互

VR中UI一般构建步骤

1、新建Canvas,放在其依附物体下

2、Render Mode改为World Space

3、修改缩放,建议值0.001

4、修改分辨率Dynamic Pixel Per Unit,建议值3

5、添加相关元素

InteractionSystem中的UI交互

a、按钮点击基于Collider,一般放置BoxCollider

b、UIElement类:在InteractionSystem中实现UI的交互,必须挂载此脚本以标记可交互的UI

c、按钮一般事件为OnHandClick,手柄点击Trigger键激活

d、ControllerButtonHints类:调用一系列静态方法以实现按钮高亮、文字提示

Demo

构建交互按钮,实现手柄文字提示以及按钮高亮

1、创建UI,为其添加UIElement

On Hand Click:当手柄点击UI时(不必按动手柄上的按键),触发事件

2、在UI轮廓添加BoxCollider,使其包裹住UI

3、新建承载触发事件脚本的gameObject,赋值到On Hand Click()

代码示例:

using UnityEngine;
using Valve.VR.InteractionSystem;

public class gameObjectManager : MonoBehaviour {

    public void ShowHints(Hand hand)
    {
        //高亮显示手柄按钮
        ControllerButtonHints.ShowButtonHint(hand, Valve.VR.EVRButtonId.k_EButton_Grip);
        ControllerButtonHints.ShowButtonHint(hand, Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad);
        ControllerButtonHints.ShowButtonHint(hand, Valve.VR.EVRButtonId.k_EButton_ApplicationMenu);
        //显示文本信息
        ControllerButtonHints.ShowTextHint(hand, Valve.VR.EVRButtonId.k_EButton_Grip,"换弹夹");
    }

    public void HideHints(Hand hand)
    {
        //单个隐藏手柄高亮按键
        ControllerButtonHints.HideButtonHint(hand, Valve.VR.EVRButtonId.k_EButton_Grip);
        //全部隐藏
        ControllerButtonHints.HideAllButtonHints(hand);

        ControllerButtonHints.HideTextHint(hand, Valve.VR.EVRButtonId.k_EButton_Grip);
        ControllerButtonHints.HideAllTextHints(hand);
    }
}

4、调整手柄交互时轮廓颜色,可通过下图所示实现

猜你喜欢

转载自blog.csdn.net/weixin_38239050/article/details/81292994