65 lines
2.2 KiB
C#
65 lines
2.2 KiB
C#
using UnityEditor;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public static class GraphicDebugExtensions
|
|
{
|
|
#if UNITY_EDITOR
|
|
[DrawGizmo(GizmoType.Selected)]
|
|
static void DrawGraphicBounds(NoDrawGraphics graphic, GizmoType gizmoType)
|
|
{
|
|
if (!graphic.enabled) return;
|
|
|
|
Color originalColor = Gizmos.color;
|
|
Gizmos.color = Color.green;
|
|
|
|
DrawRectTransformBounds(graphic.rectTransform);
|
|
}
|
|
|
|
[DrawGizmo(GizmoType.Selected)]
|
|
static void DrawRectMask2DBounds(RectMask2D rectMask, GizmoType gizmoType)
|
|
{
|
|
if (!rectMask.enabled) return;
|
|
|
|
RectTransform rectTransform = rectMask.rectTransform;
|
|
Vector4 padding = rectMask.padding;
|
|
|
|
Vector3[] worldCorners = new Vector3[4];
|
|
rectTransform.GetWorldCorners(worldCorners);
|
|
|
|
Rect rect = rectTransform.rect;
|
|
Rect paddedRect = new Rect(
|
|
rect.x + padding.x,
|
|
rect.y + padding.z,
|
|
rect.width - padding.x - padding.y,
|
|
rect.height - padding.z - padding.w
|
|
);
|
|
|
|
Vector3[] paddedCorners = new Vector3[4];
|
|
paddedCorners[0] = rectTransform.TransformPoint(new Vector3(paddedRect.x, paddedRect.y, 0)); // 左下
|
|
paddedCorners[1] = rectTransform.TransformPoint(new Vector3(paddedRect.x + paddedRect.width, paddedRect.y, 0)); // 右下
|
|
paddedCorners[2] = rectTransform.TransformPoint(new Vector3(paddedRect.x + paddedRect.width, paddedRect.y + paddedRect.height, 0)); // 右上
|
|
paddedCorners[3] = rectTransform.TransformPoint(new Vector3(paddedRect.x, paddedRect.y + paddedRect.height, 0)); // 左上
|
|
|
|
Gizmos.color = Color.green;
|
|
for (int i = 0; i < 4; i++)
|
|
{
|
|
Gizmos.DrawLine(paddedCorners[i], paddedCorners[(i + 1) % 4]);
|
|
}
|
|
}
|
|
|
|
static void DrawRectTransformBounds(RectTransform rectTransform)
|
|
{
|
|
if (rectTransform != null)
|
|
{
|
|
Vector3[] corners = new Vector3[4];
|
|
rectTransform.GetWorldCorners(corners);
|
|
|
|
Gizmos.DrawLine(corners[0], corners[1]);
|
|
Gizmos.DrawLine(corners[1], corners[2]);
|
|
Gizmos.DrawLine(corners[2], corners[3]);
|
|
Gizmos.DrawLine(corners[3], corners[0]);
|
|
}
|
|
}
|
|
#endif
|
|
} |