В новом Unity3D UI (Unity> 4.6), я пытаюсь создать простой скрипт, который я могу подключить к компоненту пользовательского интерфейса (изображение, текст и т. Д.), Что позволит мне вклиниваться в пользовательский tooltip-обработчик. Поэтому мне нужно захватить PointerEnter и PointerExit на моем компоненте. До сих пор я делаю следующее без успеха. Я вижу компонент EVentTrigger, но не могу заставить моих делегатов стрелять, чтобы спасти мою жизнь.Unity3D Programmatically Assign EventTrigger Handlers
Любые идеи?
public class TooltipTrigger : MonoBehaviour {
public string value;
void Start() {
EventTrigger et = this.gameObject.GetComponent<EventTrigger>();
if (et == null)
et = this.gameObject.AddComponent<EventTrigger>();
EventTrigger.Entry entry;
UnityAction<BaseEventData> call;
entry = new EventTrigger.Entry();
entry.eventID = EventTriggerType.PointerEnter;
call = new UnityAction<BaseEventData>(pointerEnter);
entry.callback = new EventTrigger.TriggerEvent();
entry.callback.AddListener(call);
et.delegates.Add(entry);
entry = new EventTrigger.Entry();
entry.eventID = EventTriggerType.PointerExit;
call = new UnityAction<BaseEventData>(pointerExit);
entry.callback = new EventTrigger.TriggerEvent();
entry.callback.AddListener(call);
et.delegates.Add(entry);
}
private void pointerEnter(BaseEventData eventData) {
print("pointer enter");
}
private void pointerExit(BaseEventData eventData) {
print("pointer exit");
}
}
также ... другой метод, который я могу найти, когда ковыряться на форумах и документации, чтобы добавить обработчик событий с помощью реализации интерфейса, таких как:
public class TooltipTrigger : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler {
public string value;
public void OnPointerEnter(PointerEventData data) {
Debug.Log("Enter!");
}
public void OnPointerExit(PointerEventData data) {
Debug.Log("Exit!");
}
}
Ни один из этих методов, кажется, работает для меня.
Любопытно, какую именно версию редактора Unity вы используете? Я на 5.0.2p2. Не думайте, что это имеет значение, но я могу поклясться, что у меня все наладилось именно так, как вы описали, и я до сих пор ничего не получаю. (все другие «нормальные» события пользовательского интерфейса работают очень хорошо, только проблема - это программная, которую я пытаюсь настроить здесь) – slumtrimpet
Я на 5.0.1f1. Можете ли вы показать мне иерархию своей сцены и что именно вы делаете с объектом, к которому вы подключили скрипт с помощью IPointHandlers? – Utamaru
Еще одна полезная проверка, которую вы можете сделать, это выбрать игровой объект EventSystem и посмотреть на инспектора, внизу вы должны увидеть все события по мере их изменения, и если ваш proejct настроен правильно, вы должны увидеть имя «pointerEnter» объекта, в который вводится указатель, вызывается (если есть) в реальном времени. –