VRTK_UI

论坛 期权论坛 脚本     
匿名网站用户   2020-12-20 23:09   11   0

我们都知道在VR模式下 Canvas为World模式是渲染不到HTC VIVE 或者 VR设备的,因为 VR 技术是把游戏相机看到的 渲染成 我们左眼看到的 和右眼看到,关于原理https://blog.csdn.net/u013131744/article/details/53744998

因此就无法叠加到最顶层,使用VRTK 里面的VRTK TK Canvas可以做到很不错 的交互,再配合闪Cuve UI插件就可以实现 曲面 UI 效果,实际上如何使用VRKT的UI呢?

有3步,

1在Untiy Canvas 上 添加VRTK_UI_Canvas 组件,Canvas World模式 加了之后 VRTK就会自动给Canvas加上 Collider组件

2.在 leftController/RighController上添加 VRTK UI_Point 组件

3.再添加上 Pointer组件 用射线来进行探测。

第二种,自己造个轮子

当然也可以自己重写 Unity 中的Button这些,然后再用射线进行 检测 .其实主要方法就是通过射线进行探测,来判断是否 按下 button, Stay Enter Exit 在Stay的时候监听 有没有按下button,有就调用挂在button上的事件。

用这个方法

写的很暴力,还是推荐用上面的方法

onClick.Invoke();

using UnityEngine.UI;

public class rayButton : Button
{


 /// <summary>  
 /// 射线进入(对外接口)  
 /// </summary>  
 public virtual void RayEnter()
 {
  DoStateTransition(SelectionState.Highlighted, false);
  
  

 }
 
 /// <summary>  
 /// 射线停留(对外接口)  
 /// </summary>  
 public virtual void RayStay()
 {
  ResetButtonState();
 }
 /// <summary>  
 /// 射线离开(对外接口)  
 /// </summary>  
 public virtual void RayExit()
 {
  DoStateTransition(SelectionState.Normal, false);

 }

 /// <summary>  
 /// 射线一直处于进入状态时,可能需要执行的事件  
 /// </summary>  
 public virtual void TriggerEvent()
 {

  DoStateTransition(SelectionState.Pressed, true);
  onClick.Invoke();

 }
 
 
 
 

 /// <summary>  
 /// 事件完成  
 /// </summary>  
 public virtual void ResetButtonState()
 {
  DoStateTransition(SelectionState.Highlighted, false);
 }

}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP