Unity3D以编程方式分配EventTrigger处理程序

时间:2015-05-26 12:51:45

标签: unity3d unity3d-gui

在新的Unity3D用户界面(Unity> 4.6)中,我试图创建一个简单的脚本,我可以附加到UI组件(图像,文本等),这将允许我楔入自定义工具提示处理程序。所以我需要的是在我的组件上捕获PointerEnter和PointerExit。到目前为止,我做了以下工作但没有成功。我看到EVentTrigger组件出现但无法让我的代表开火以挽救我的生命。

有什么想法吗?

context.getResources().getString(R.string.app_name);

另外......在讨论论坛和文档时我可以找到的另一种方法是通过接口实现添加事件处理程序,例如:

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 个答案:

答案 0 :(得分:2)

您正在寻找第二种方法(IPointerEnterHandlerIPointerExitHandler接口的实现)。但要触发OnPointerEnterOnPointerExit方法,您的场景必须包含名为“EventSystem”的GameObject EventSystem - component(当您向场景添加任何UI元素时,此GameObject会自动创建,如果它不在这里 - 自己创建)和不同输入方法的组件(例如StandaloneInputModuleTouchInputModule)。

Canvas(您的按钮的Canvas组件的根对象)必须具有GraphicRaycaster组件才能通过光线投射检测UI元素。

我刚测试了你帖子中的代码并且它的工作正常。