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<T>(PointerEventData data,ExecuteEvents.EventFunction<T> function)
where T:IEventSystemHandler
{
List<RaycastResult> results = new List<RaycastResult>();
EventSystem.current.RaycastAll(data, results);
GameObject current = data.pointerCurrentRaycast.gameObject;
for(int i=0;i<results.Count;i++)
{
if(current!=results[i].gameObject)
{
ExecuteEvents.Execute(results[i].gameObject, data, function);
//如果只想滲透到下一層,只需break即可
//break;
}
}
}
}
UI滲透
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.