Я пытался заставить выпадающий элемент пользовательского интерфейса работать с 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]
Итак, у меня есть два вопроса:
- Как получить текущий элемент пользовательского интерфейса (зависший или нажатый)
- Как заставить элемент Dropdown UI работать с Oculus Rift (OVRRayCaster)
Если что-то неясно, пожалуйста, дайте мне знать, чтобы я мог уточнить.