为了看出那个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]);
}
}
}