получить нажатие / в настоящее время активный элемент интерфейса Oculus OVR Unity - PullRequest
0 голосов
/ 04 октября 2018

Я пытался заставить выпадающий элемент пользовательского интерфейса работать с Oculus Rift.Я преобразовал Canvas и Eventsystem для работы с OVR-классами из Oculus.В данный момент все элементы пользовательского интерфейса работают, кроме элемента DropDown.

После некоторых исследований я обнаружил, что элемент Dropdown динамически создает список опций, в результате чего эти элементы не могут пересекаться OVRRaycaster.Поэтому я попробовал следующий код, чтобы обновить элементы, если они изменяются динамически:

void Update () 
{
    var found = gameObject.GetComponentsInChildren<GraphicRaycaster>();
    foreach (var gr in found) {
    var ovr = gr.GetComponent<OVRRaycaster>();
        if (ovr == null) {
            gr.enabled = false;
            ovr = gr.gameObject.AddComponent<OVRRaycaster>();
            ovr.sortOrder = 20;
        }
    }
}

к сожалению, это сломало все элементы пользовательского интерфейса в процессе (и не исправило выпадающий элемент).Поэтому я подумал, почему бы не получить текущий элемент, над которым я нахожусь, и применить тот же код.Посмотрите, если это имеет значение.Поэтому я попытался получить следующую функцию из документации Oculus:

OVRRaycaster.OnPointerEnter ( PointerEventData e )

, но эта строка выдает мне следующую ошибку:

'PointerEventData' - это тип, который не являетсядействителен в данном контексте [Assembly-CSharp]

Итак, у меня есть два вопроса:

  1. Как получить текущий элемент пользовательского интерфейса (зависший или нажатый)
  2. Как заставить элемент Dropdown UI работать с Oculus Rift (OVRRayCaster)

Если что-то неясно, пожалуйста, дайте мне знать, чтобы я мог уточнить.

...