テクノモンキー(サブ)

テクノモンキーのニュースブログです。 主に新作ゲームアプリやAmazonプライムビデオのレビュー、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



関連:
【Unity】Scene内のGameObjectをポーズ(一時停止)させる方法 - テクノモンキー(サブ)
【Unity】プレイヤーがダメージを受けた時に点滅させる方法 - テクノモンキー(サブ)
【Unity】ローカライズ対応 日本語か英語かで処理を分ける方法 - テクノモンキーのアプリ開発日記
【Unity】デバッグログの出し方とログの文字色を変更する方法 - テクノモンキーのアプリ開発日記