我正在使用OculusVR创建一个应用程序。
我有一个有许多按钮的画布。我希望这些按钮仅在用户向下看那个区域时出现。
当我凝视画布时,会出现“光标”。但是,我需要能够在用户凝视时激活按钮。我希望在此之前不要看到它们。
如何检测用户注视的事件,以便我可以激活按钮?
答案 0 :(得分:0)
假设OculusVR与Unity EventSystem
配合使用,您可以执行以下操作:
将Image
添加到Canvas
,并将不透明度设置为0,将其缩放以适合整个画布。这将是您的触发元素,必须始终启用它,以便EventSystem.current.IsPointerOverGameObject
返回true。
附上下面的脚本,将Canvas
对象拖到Target
成员,将Image
对象拖到Trigger
成员。
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);
}
}
}
}