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

 

解决:

 

using UnityEngine;

using System.Collections;

using UnityEngine.EventSystems;

public class EventTriggerListener : EventTrigger

{

public delegate void VoidDelegate(GameObject go);

public VoidDelegate onClick;

public VoidDelegate onDown;

扫描二维码关注公众号,回复: 1890253 查看本文章

public VoidDelegate onEnter;

public VoidDelegate onExit;

public VoidDelegate onUp;

public VoidDelegate onSelect;

public VoidDelegate onUpdateSelect;

 

static public EventTriggerListener Get(GameObject go)

{

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

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

return listener;

}

public override void OnPointerClick(PointerEventData eventData)

{

base.OnPointerClick(eventData);

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

}

public override void OnPointerDown(PointerEventData eventData)

{

base.OnPointerDown(eventData);

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

}

public override void OnPointerEnter(PointerEventData eventData)

{

base.OnPointerEnter(eventData);

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

}

public override void OnPointerExit(PointerEventData eventData)

{

base.OnPointerExit(eventData);

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

}

public override void OnPointerUp(PointerEventData eventData)

{

base.OnPointerUp(eventData);

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

}

public override void OnSelect(BaseEventData eventData)

{

base.OnSelect(eventData);

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

}

public override void 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;

public class UIPanel : MonoBehaviour {

 

    // Use this for initialization

    void Start () {

 

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

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

}

 

private void OnClick(GameObject go)

{

print(122);

}

 

private void onclicked(GameObject go)

{

print(111);

}

// Update is called once per frame

void Update () {

        

    }

}

猜你喜欢

转载自blog.csdn.net/qq_25601345/article/details/78521424