VRTK_UI

版权声明:转载 请说明 https://blog.csdn.net/qq2512667/article/details/82846803

我们都知道在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);
	}

}

猜你喜欢

转载自blog.csdn.net/qq2512667/article/details/82846803