EventTrigger接管所有事件导致其他事件无法触发

来源:互联网 发布:零用钱大作战mac 编辑:程序博客网 时间:2024/06/06 13:42

 

解决:

 

using UnityEngine;

using System.Collections;

using UnityEngine.EventSystems;

publicclassEventTriggerListener : EventTrigger

{

publicdelegatevoidVoidDelegate(GameObject go);

publicVoidDelegate onClick;

publicVoidDelegate onDown;

publicVoidDelegate onEnter;

publicVoidDelegate onExit;

publicVoidDelegate onUp;

publicVoidDelegate onSelect;

publicVoidDelegate onUpdateSelect;

 

staticpublicEventTriggerListener Get(GameObject go)

{

EventTriggerListener listener = go.GetComponent<EventTriggerListener>();

if (listener == null) listener = go.AddComponent<EventTriggerListener>();

return listener;

}

publicoverridevoid OnPointerClick(PointerEventData eventData)

{

base.OnPointerClick(eventData);

if (onClick != null) onClick(gameObject);

}

publicoverridevoid OnPointerDown(PointerEventData eventData)

{

base.OnPointerDown(eventData);

if (onDown != null) onDown(gameObject);

}

publicoverridevoid OnPointerEnter(PointerEventData eventData)

{

base.OnPointerEnter(eventData);

if (onEnter != null) onEnter(gameObject);

}

publicoverridevoid OnPointerExit(PointerEventData eventData)

{

base.OnPointerExit(eventData);

if (onExit != null) onExit(gameObject);

}

publicoverridevoid OnPointerUp(PointerEventData eventData)

{

base.OnPointerUp(eventData);

if (onUp != null) onUp(gameObject);

}

publicoverridevoid OnSelect(BaseEventData eventData)

{

base.OnSelect(eventData);

if (onSelect != null) onSelect(gameObject);

}

publicoverridevoid OnUpdateSelected(BaseEventData eventData)

{

base.OnUpdateSelected(eventData);

if (onUpdateSelect != null) onUpdateSelect(gameObject);

}

}

 

 

 

下面是以防自己忘记调用准备的。

 

 

using System;

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.EventSystems;

publicclassUIPanel : MonoBehaviour {

 

    // Use this for initialization

    void Start () {

 

EventTriggerListener.Get(GameObject.Find("RawImage")).onClick = onclicked;

EventTriggerListener.Get(GameObject.Find("Scroll View")).onClick = OnClick;

}

 

privatevoid OnClick(GameObject go)

{

print(122);

}

 

privatevoid onclicked(GameObject go)

{

print(111);

}

// Update is called once per frame

void Update () {

        

    }

}