テクノモンキー(サブ)

テクノモンキーのサブブログです。 iOSやAndroid、Unityのアプリ開発に関する情報や気になったニュース、考え事などを気軽に発信します。

【Unity】GameObjectの幅と高さを取得・変更する方法(RectTransform)

勉強ためにUnityの記事を書いているサイトを読み漁っているんですが、

古い情報の記事で、昔のメソッドを使っていて今は使えないってことが多々あります。


今回は、GameObjectの幅と高さを変更する方法について。


GUITextureは使えない


GameObjectの幅と高さをスクリプトでサイズ変更したくて色々調べていたところ、

GUITextureを使ってサイズ変更する方法がありました。

Rect rect = guiTexture.pixelInset;
rect.width = (rect.width + 10);
guiTexture.pixelInset = rect;


この方法でやろうと思ったんですが、Unityのドキュメントによると「GUITexture」は古い描画方法とのことでした。

f:id:no-work-no-life-4081:20180512150009p:plain

docs.unity3d.com


なので他の方法を調査。



RectTransformのsizeDeltaでサイズ取得・変更する

調べたところ、RectTransformのsizeDeltaでGameObjectのサイズ取得・サイズ変更ができるようです。

//ゲームオブジェクトのサイズ変更
gameObject.GetComponent<RectTransform> ().sizeDelta = new Vector2 ((gameObject.GetComponent<RectTransform>().sizeDelta.x - 10),gameObject.GetComponent<RectTransform>().sizeDelta.y);

//ゲームオブジェクトの横幅サイズを取得
if(gameObject.GetComponent<RectTransform>().sizeDelta.x <= 0){
    //横幅0以下だったら0にする
    gameObject.GetComponent<RectTransform> ().sizeDelta = new Vector2 (0,gameObject.GetComponent<RectTransform>().sizeDelta.y);

}


ゲームオブジェクトのRectTransformのコンポーネントを取得して、sizeDeltaでゲームオブジェクトの横幅・高さが取得できます。

また、Vector2(横幅,高さ)を指定すればゲームオブジェクトのサイズの変更が行えます。


以下の記事を参考にさせて頂きました。


uGUIのImageの移動、サイズ変更などなどboccilog.wordpress.com