为了看出那个UI的raycast勾选了
public class UIRayCast : MonoBehaviour { public static bool m_IsCheck = false; #if UNITY_EDITOR [MenuItem("Tool/UI RayCast Check")] static void UIRayCastCheck() { m_IsCheck = !m_IsCheck; } Vector3[] fourCorners = new Vector3[4]; void OnDrawGizmos() { if (m_IsCheck) { foreach (MaskableGraphic g in GameObject.FindObjectsOfType<MaskableGraphic>()) { if (g.raycastTarget) { RectTransform rectTransform = g.transform as RectTransform; rectTransform.GetWorldCorners(fourCorners); Gizmos.color = Color.blue; for (int i = 0; i < 4; i++) { Vector3 offset = Vector3.zero; switch (i) { case 1: offset = Vector3.down; break; case 2: offset = Vector3.left; break; case 3: offset = Vector3.up; break; case 0: offset = Vector3.right; break; default: break; } Gizmos.DrawLine(fourCorners[i] + offset * 5f, fourCorners[(i + 1) % 4] + offset * 5f); } } } } } #endif }要是有问题的话,这样
foreach (MaskableGraphic g in GameObject.FindObjectsOfType<MaskableGraphic>()) { if (g.raycastTarget) { RectTransform rectTransform = g.transform as RectTransform; rectTransform.GetWorldCorners(fourCorners); Gizmos.color = Color.blue; for (int i = 0; i < 4; i++) { Gizmos.DrawLine(fourCorners[i], fourCorners[(i + 1) % 4]); } } }