using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems; using UnityEngine.UI; /// /// 检测穿透点击,是否点击了UI下方的按钮 /// public class RaycastDetect : MonoBehaviour { public UnityAction ClickAction; public UnityAction DefaultAction; void Update() { if (Input.GetMouseButtonDown(0)) { // 检测点击事件 PointerEventData pointerData = new PointerEventData(EventSystem.current) { position = Input.mousePosition }; // 获取点击的UI对象 var results = new System.Collections.Generic.List(); EventSystem.current.RaycastAll(pointerData, results); if (results.Count > 0) { GameObject clickedObject = results[0].gameObject; if (clickedObject != this.gameObject) { //上层有其他UI return; } foreach (var result in results) { //获取点击的按钮 if (result.gameObject.GetComponent