コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】RectTransform のサイズを TMP_Text などの大きさに合わせる MenuItem

ソースコード

using UnityEditor;
using UnityEngine;
using UnityEngine.UI;

namespace Kogane.Internal
{
    internal static class SetPreferredSizeMenuItem
    {
        [MenuItem( "CONTEXT/RectTransform/Set Preferred Size" )]
        private static void SetPreferredSize( MenuCommand menuCommand )
        {
            var rectTransform = ( RectTransform )menuCommand.context;

            Undo.RecordObject( rectTransform, "Set Preferred Size" );

            SetSizeWithCurrentAnchors( RectTransform.Axis.Horizontal );
            SetSizeWithCurrentAnchors( RectTransform.Axis.Vertical );

            void SetSizeWithCurrentAnchors( RectTransform.Axis axis )
            {
                rectTransform.SetSizeWithCurrentAnchors
                (
                    axis: axis,
                    size: LayoutUtility.GetPreferredSize( rectTransform, ( int )axis )
                );
            }
        }
    }
}