VRTK3.3.0 代码控制显示隐藏,UI射线

1丶先复制示例场景2,偷一波资源

2丶在右手控制器上,添加脚本

调整VRTK_Pointer设置,如下

3丶添加重写VRTK_UIPointer脚本

using VRTK;
public class MyUIPointer : VRTK_UIPointer
{
    public bool myHead;
    public bool showState ;
    public override bool PointerActive()
    {

        if (myHead)
        {
            return showState;
        }
        else
        {
            return base.PointerActive();
        }
    }
}

4丶创建脚本,用来控制UI射线的状态

using UnityEngine;
using VRTK;

public class MyVRController : MonoBehaviour 
{
    [Header("与UI交互的VRTK_Pointer")]
    public VRTK_Pointer vRTK_Pointer;

    [Header("自己重写的UIPointer")]
    public MyUIPointer myUIPointer;

    //  显示隐藏UI交互射线
    public void ActiveState(bool isActive)
    {
        if (isActive)
        {
            vRTK_Pointer.Toggle(true);//    这里需要显示两次,我也不知道为什么,有看到知道的,求评论告知,谢谢
            vRTK_Pointer.Toggle(true);
            myUIPointer.showState = true;
        }
        else
        {
            vRTK_Pointer.Toggle(false);
            myUIPointer.showState = false;
        }
    }
    //  初始状态
    private void OnEnable()
    {
        if (myUIPointer.myHead)
        {
            ActiveState(myUIPointer.showState);
        }
    }
}

 

5丶最后设置如下,测试按J显示射线,按K隐藏

 

posted @ 2019-08-01 15:46  MyUnity  阅读(954)  评论(0编辑  收藏  举报