UI渗透


using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class Script_05_09 : MonoBehaviour, IPointerClickHandler, 
    IPointerDownHandler, IPointerUpHandler
{
    //监听点击
    public void OnPointerClick(PointerEventData eventData)
    {
        PassEvent(eventData, ExecuteEvents.submitHandler);
        PassEvent(eventData, ExecuteEvents.pointerClickHandler);
    }

    //监听按下
    public void OnPointerDown(PointerEventData eventData)
    {
        PassEvent(eventData, ExecuteEvents.pointerDownHandler);
    }

    //监听抬起
    public void OnPointerUp(PointerEventData eventData)
    {
        PassEvent(eventData, ExecuteEvents.pointerUpHandler);
    }

    public void PassEvent(PointerEventData data,ExecuteEvents.EventFunction function)
        where T:IEventSystemHandler
    {
        List results = new List();
        EventSystem.current.RaycastAll(data, results);
        GameObject current = data.pointerCurrentRaycast.gameObject;
        for(int i=0;i