気ままなUnityエンジニアブログ

新米Unityエンジニアが送る解説アウトプットブログです。Twitter : @UjinUnity

MENU

【Unity】アイコンの数に合わせてレイアウトを調整する

スポンサーリンク

f:id:Wojtek:20190623012054g:plain

 

Unity使いなら かっこいいレイアウトを自動制御したいですよね!!

レイアウト 自動制御 で調べると様々な記事が出てきますが、今回は

アイコンの数だけ背景の高さ(幅)を動的に合わせてくれる 処理を実装して見ましょう。

 

 

全体図

f:id:Wojtek:20190623011342p:plain

階層はこうなっています。

BG ... 動的に変化させる背景画像

ButtonArea...Button(アイコン)を生成させる親オブジェクト

Button... poolオブジェクト

 

Layout.csのプロパティですが、

Space ... アイコン同士の間隔

BtnSize...生成するButton(アイコン)の幅と高さ

Btn...生成元のpool変数

BtnList...生成したButton(アイコン)を格納するList

BtnArea...Button(アイコン)の生成先の親オブジェクト

Bg... Sizeを調整する背景画像

 

 

動的に変化させる背景

f:id:Wojtek:20190623011910p:plain

ポイントはanchorのpivotのYを1にして下さい。

Heightを変化させてもposYは変化しなくなります。

アイコンを表示するエリア

f:id:Wojtek:20190623011928p:plain

こちらもanchorのpivotのYを1にして下さい

 

増やすアイコンオブジェクト

f:id:Wojtek:20190623011941p:plain

こちらは任意です。

注意点は必ず初期位置座標は0,0でお願いします。

 

スクリプト一覧

f:id:Wojtek:20190623011958p:plain

<プロパティ>

 

Button(アイコン)の生成

f:id:Wojtek:20190623012012p:plain

今回はテストで3つ生成しています。

内容は設定してあるpoolオブジェクトを生成してListに格納しています。

ポイントはanchorpositionを Button(アイコン) の高さ + 間隔 ) * 生成順序 で生成したアイコンの位置を調整しています。

 

背景の高さを変更

f:id:Wojtek:20190623012024p:plain

本題と背景サイズを変更します。

今回は高さのみ変更です。

まずは現在の背景画像のSizeを取得しておきます。

サイズ変更の式は 初期の背景画像サイズ   + ( 生成アイコンのサイズ + 生成数) * ( 間隔 + 生成数 - 1) になっています。

 

これでオブジェクトの生成数に合わせて背景画像のSizeを動的に変化できるようになりました。

 

いかがだったでしょうか。

今回は全てStartで書いていましたが、アイコンが増える度に発生するようにすれば、ダイナミックなUIを作成できます!