Стек:
- Oculus Quest
- Unity 2019.3
- Интеграция Oculus VR
- macOS Catilina
У меня есть сцена Unity с интерфейсом VR, состоящим из Canvas (координаты мирового пространства) и двух кнопок. К холсту прикреплены объекты OVR Raycaster, в которых используется лазерная указка. В целом это работает хорошо, но когда я пытаюсь перехватить событие, вызванное наведением лазерного указателя на кнопку, я могу получить только событие щелчка.
Я использую следующий скрипт (прикрепленный к кнопке) :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class VRButton : MonoBehaviour, IPointerEnterHandler, IPointerClickHandler, ISelectHandler
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
public void OnPointerEnter(PointerEventData eventData)
{
Debug.Log("Enter!");
transform.localScale *= 1.2f;
}
public void OnPointerExit(PointerEventData eventData)
{
Debug.Log("Exit!");
transform.localScale /= 1.2f;
}
public void OnPointerClick(PointerEventData eventData)
{
Debug.Log("Clicked!");
}
}
Странно то, что OnPointerEnter и OnPointerClick вызываются, когда я указываю кнопку лазером и нажимаю. Простое наведение не вызывает никакого события (ни OnPointerExit, ни OnPointerEnter).
Это мой журнал ADB:
03-15 22:59:53.085 13339 13355 I Unity : Clicked!
03-15 22:59:53.085 13339 13355 I Unity : UnityEngine.Logger:Log(LogType, Object)
03-15 22:59:53.085 13339 13355 I Unity : UnityEngine.EventSystems.EventFunction`1:Invoke(T1, BaseEventData)
03-15 22:59:53.085 13339 13355 I Unity : UnityEngine.EventSystems.ExecuteEvents:Execute(GameObject, BaseEventData, EventFunction`1)
03-15 22:59:53.085 13339 13355 I Unity : UnityEngine.EventSystems.OVRInputModule:ProcessMousePress(MouseButtonEventData)
03-15 22:59:53.085 13339 13355 I Unity : UnityEngine.EventSystems.OVRInputModule:ProcessMouseEvent(MouseState)
03-15 22:59:53.085 13339 13355 I Unity :
03-15 22:59:53.085 13339 13355 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
03-15 22:59:53.085 13339 13355 I Unity :
03-15 22:59:53.085 13339 13355 I Unity : Enter!
03-15 22:59:53.085 13339 13355 I Unity : UnityEngine.Logger:Log(LogType, Object)
03-15 22:59:53.085 13339 13355 I Unity : VRButton:OnPointerEnter(PointerEventData)
03-15 22:59:53.085 13339 13355 I Unity : UnityEngine.EventSystems.EventFunction`1:Invoke(T1, BaseEventData)
03-15 22:59:53.085 13339 13355 I Unity : UnityEngine.EventSystems.ExecuteEvents:Execute(GameObject, BaseEventData, EventFunction`1)
03-15 22:59:53.085 13339 13355 I Unity : UnityEngine.EventSystems.BaseInputModule:HandlePointerExitAndEnter(PointerEventData, GameObject)
03-15 22:59:53.085 13339 13355 I Unity : UnityEngine.EventSystems.OVRInputModule:ProcessMousePress(MouseButtonEventData)
03-15 22:59:53.085 13339 13355 I Unity : UnityEngine.EventSystems.OVRInputModule:ProcessMouseEvent(MouseState)
Как это исправить?