はじめに
unity 2020からUIの当たり判定を変更できるRaycastPaddingが追加されました。
非常に便利だと思うのですが視覚的にどのように変更されたのか分からなかったのでGizmoで表示してみました。
概要
当たり判定とGizmoが正しいかのために赤のImageを追加して、実際にタッチがどのようになっているか確認してみます。
Editorで確認
ある程度はあっているみたいなのですが1ピクセルの正確に表示されているかは微妙なところです、一応あっていると思います。
コード
コード全文.cs
.cs
using UnityEngine;
using UnityEngine.UI;
using UnityEditor;
public static class RaycastPaddingDrawer
{
[DrawGizmo(GizmoType.Selected, typeof(Image))]
private static void DrawPadding(Image image, GizmoType gizmoType)
{
var rectTransform = image.rectTransform;
var rect = rectTransform.rect;
var max = rect.max;
max.x -= image.raycastPadding.z;
max.y -= image.raycastPadding.w;
var min = rect.min;
min.x += image.raycastPadding.x;
min.y += image.raycastPadding.y;
var p0 = rectTransform.TransformPoint(max);
var p2 = rectTransform.TransformPoint(min);
var p1 = new Vector3(p2.x, p0.y, p0.z);
var p3 = new Vector3(p0.x, p2.y, p0.z);
Gizmos.color = Color.green;
Gizmos.DrawLine(p0, p1);
Gizmos.DrawLine(p1, p2);
Gizmos.DrawLine(p2, p3);
Gizmos.DrawLine(p3, p0);
}
}
おわりに
便利な機能ですが視覚化して確認できなければ正直使いにくく拡張用のImageを追加するほうが確実な感じがしました、Unityが公式に対応してほしいですね…