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、调整手柄交互时轮廓颜色,可通过下图所示实现