Unity UGUI 射线raycast 描边检测

mac2025-07-07  8

为了看出那个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]); } } }
最新回复(0)