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<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; } } } }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章