うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【Unity】RectTransform の Rect を Scene View に描画する

UI を作成している際に親の RectTransform の Rect を見つつ作業したいが
基本的には選択しているものしか範囲がわからないので UI を作りづらい

これの解決方法として、編集する RectTransform 選択時親の Rect を描画することにする

RectTransform の Rect を取得するには以下のコードで取得ができる

public Rect GetRect()
{
    Vector2 size = rectTransform.rect.size;
    size.x *= rectTransform.lossyScale.x;
    size.y *= rectTransform.lossyScale.y;
 
    return  new Rect
    {
        center = (Vector2) rectTransform.position - new Vector2(
            rectTransform.pivot.x * size.x,
            rectTransform.pivot.y * size.y
        ),
        size = size,
    };
}

これを Gizmo を使って描画すると以下のようになり、RectTransform の範囲と一致してることが確認できる

f:id:hacchi_man:20190927011301p:plain

これを使って親の RectTransform を描画する拡張を作成する

ツール

このように、 選択したオブジェクトから 親 Canvas までの Rect を色を付けて表示できる
自分より親の Rect は緑色、自分以下の Rect は赤色で表示してある

f:id:hacchi_man:20200112014232p:plain

コード