4

新しい Unity3D UI (Unity > 4.6) で、UI コンポーネント (画像、テキストなど) にアタッチできる簡単なスクリプトを作成しようとしています。これにより、カスタム ツールチップ ハンドラーを使用できるようになります。したがって、コンポーネントで PointerEnter と PointerExit をキャプチャする必要があります。これまでのところ、私は次のことを行っていますが、成功していません。EVentTrigger コンポーネントが表示されますが、デリゲートを起動して命を救うことができません。

何か案は?

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");
  }

}

また...フォーラムやドキュメントを調べているときに見つけることができるもう1つの方法は、次のようなインターフェース実装を介してイベントハンドラーを追加することです。

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!");
  }

}

これらの方法はどちらも私にはうまくいかないようです。

4

1 に答える 1