当画布被凝视时显示按钮

时间:2017-04-27 14:31:34

标签: unity3d unity5 oculus virtual-reality

我正在使用OculusVR创建一个应用程序。

我有一个有许多按钮的画布。我希望这些按钮仅在用户向下看那个区域时出现。

当我凝视画布时,会出现“光标”。但是,我需要能够在用户凝视时激活按钮。我希望在此之前不要看到它们。

如何检测用户注视的事件,以便我可以激活按钮?

1 个答案:

答案 0 :(得分:0)

假设OculusVR与Unity EventSystem配合使用,您可以执行以下操作:

Image添加到Canvas,并将不透明度设置为0,将其缩放以适合整个画布。这将是您的触发元素,必须始终启用它,以便EventSystem.current.IsPointerOverGameObject返回true。

附上下面的脚本,将Canvas对象拖到Target成员,将Image对象拖到Trigger成员。

enter image description here

using UnityEngine;
using UnityEngine.EventSystems;
using System.Collections.Generic;

public class UITouch : MonoBehaviour {

/// <summary>
/// Your main canvas
/// </summary>
public Canvas Target;

/// <summary>
/// A UI element that must remain active to make IsPointerOverGameObject true;
/// </summary>
public GameObject Trigger;

// Update is called once per frame
void Update () {
    if (EventSystem.current.IsPointerOverGameObject())
    {
        foreach(Transform child in Target.transform)
        {
            child.gameObject.SetActive(true);
        }
    }
    else
    {
        foreach (Transform child in Target.transform)
        {   
            // Make sure not to hide the triggering element
            if (child.gameObject == Trigger) continue;
            child.gameObject.SetActive(false);
        }
    }

}
}