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;
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 () {
????????
????}
}
總結
以上是生活随笔為你收集整理的EventTrigger接管所有事件导致其他事件无法触发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mysql雨松工具类使用
- 下一篇: Unet基础学习