コガネブログ

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

【Unity】【uGUI】RectTransform の幅と高さの取得/設定を楽にする拡張メソッド

はじめに

var t = self.GetComponent<RectTransform>();

// 取得
var width  = t.sizeDelta.x;
var height = t.sizeDelta.y;

// 設定
var sizeDelta = t.sizeDelta;
sizeDelta = new Vector2( 128, 64 );
t.sizeDelta = sizeDelta;

RectTransform の幅と高さと取得、設定する記述が少し冗長に感じたので
わかりやすくするための拡張メソッドを作成しました

ソースコード

using UnityEngine;

/// <summary>
/// RectTransform 型の拡張メソッドを管理するクラス
/// </summary>
public static class RectTransformExt
{
    /// <summary>
    /// 幅を返します
    /// </summary>
    public static float GetWidth( this RectTransform self )
    {
        return self.sizeDelta.x;
    }
    
    /// <summary>
    /// 高さを返します
    /// </summary>
    public static float GetHeight( this RectTransform self )
    {
        return self.sizeDelta.y;
    }

    /// <summary>
    /// 幅を設定します
    /// </summary>
    public static void SetWidth( this RectTransform self, float width )
    {
        var size = self.sizeDelta;
        size.x = width;
        self.sizeDelta = size;
    }
    
    /// <summary>
    /// 高さを設定します
    /// </summary>
    public static void SetHeight( this RectTransform self, float height )
    {
        var size = self.sizeDelta;
        size.y = height;
        self.sizeDelta = size;
    }
    
    /// <summary>
    /// サイズを設定します
    /// </summary>
    public static void SetSize( this RectTransform self, float width, float height )
    {
        self.sizeDelta = new Vector2( width, height );
    }
}

使い方

var t = self.GetComponent<RectTransform>();

// 取得
var width  = t.GetWidth();
var height = t.GetHeight();

// 設定
t.SetWidth( 128 );
t.SetHeight( 64 );
t.SetSize( 128, 64 );

関連記事