UnityコードでUIサイズを設定する方法

Unity の UI の実際の幅と高さは、rect.size を通じて取得できますが、このプロパティは読み取り専用であり、変更できません。
したがって、サイズを変更したい場合は、通常 2 つの方法があります:
方法 1:rect.SizeDelta を使用して UI のサイズを変更する、SizeDelta はアンカーポイントの設定に応じて変更されます。値は直感的ではなく、使いにくいです。方法 2: SetSizeWithCurrentAnchors
メソッドを使用して幅と高さを設定する

でも突然SizeDeltaを使って数式で設定したくなりました

ここに画像の説明を挿入

RectTransform では、
rect.min はオブジェクトの左下隅を表し、
rect.max はオブジェクトの中心 (Pivot) を原点としたオブジェクトの右上隅を表し、
offsetMax はアンカーを基準とした相対的な位置を表します。オブジェクトの左下隅の点です。左下隅のオフセットは、
アンカーポイントの左下隅の点anchorMinPosをオブジェクトの中心(Pivot)を原点とした相対位置であるとみなして、offsetMinを計算します
。 =rect.min-anchorMinPos はoffsetMax=rect.min-anchorMaxPosおよび sizeDelta=offsetMax-offsetMin
と同じです; sizeDelta=rect.max-rect.min-(anchorMaxPos-anchorMinPos)を取得できます。 ここでは、 rect.max であることがわかります。-rect.minは、UIの実際の幅と高さのrect.sizeを表します。sizeDelta=rect.size-(anchorMaxPos-anchorMinPos) anchorMaxPos-anchorMinPosは、アンカーポイントによって形成される長方形の幅と高さのvector2を表します。アンカーポイントは親オブジェクトに合わせて変更されます オブジェクトのサイズを変更してもアンカーポイントの変更には影響しません オブジェクトのサイズを変更すると、rect.sizeのオフセットが変更されます その量はsizeDeltaで変更されたオフセットと同じです







 public static void SetSize(RectTransform rectTrans, Vector2 newSize)
    {
    
    
        Vector2 oldSize = rectTrans.rect.size;
        Vector2 offset = newSize - oldSize;
        rectTrans.sizeDelta = rectTrans.sizeDelta + offset;
    }

おすすめ

転載: blog.csdn.net/ForXz/article/details/128737456
おすすめ