Взаимодействовать с пользовательским элементом интерфейса в Unity - PullRequest
1 голос
/ 01 мая 2019

У меня проблема с пользовательским интерфейсом. У меня есть пользовательское модальное окно, которое отображается, когда я наводю указатель мыши на объект, а затем хочу исчезнуть, когда мышь покидает область модального окна, но я не могу найти решение, как это сделать. Игровые объекты в иерархии и инспекторе холста

Я искал в интернете, я пробовал его с raycasters, но он не работает или, возможно, я что-то делаю не так.

Вот как я называю Script ModalWindowScript, когда мышь находится над объектом, чтобы я мог как-то взаимодействовать с элементами пользовательского интерфейса.

    [SerializeField] GameObject uIModalWindow;
    private void Start()
    { 
        uIModalWindow.SetActive(false);
    }

    private void OnMouseEnter()
    {
        var mousePos = Input.mousePosition;
        Debug.Log(gameObject.name);
        uIModalWindow.transform.position = mousePos;
        uIModalWindow.SetActive(true);
    }

    private void OnMouseExit()
    {
        uIModalWindow.AddComponent<ModalWindowScript>();
    }

Ожидаемый результат - модальное окно исчезнет, ​​когда мышь покинет область модального окна. Но на самом деле я не могу понять, как общаться с пользовательским интерфейсом.

HoverOverObject ModalWindowScript

1 Ответ

0 голосов
/ 01 мая 2019

Вам необходимо реализовать интерфейс IPointerEnterHandler & IPointerExitHandler, чтобы получить решение такого типа для получения правильных событий:

public class HoverOverObject : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler

    [SerializeField] GameObject uIModalWindow;
    private void Start()
    { 
        uIModalWindow.SetActive(false);
    }

    public void OnPointerEnter(PointerEventData e)
    {
        var mousePos = Input.mousePosition;
        Debug.Log(gameObject.name);
        uIModalWindow.transform.position = mousePos;
        uIModalWindow.SetActive(true);
    }

    public void OnPointerExit(PointerEventData e)
    {
        uIModalWindow.AddComponent<ModalWindowScript>();
    }
}

Примечание: измененный код: добавлены интерфейсы, изменено имя методов, изменен доступ с частного наПубличные о методах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...