kindle版が安かった時に「UnityゲームUI実践ガイド」を買ってますが、
そこにスクリプトでuGUIを生成する解説があって、以下の様なコードがありました。
実際に動かしてるコードではないので、いづれ時間をとって実験したいです。
public RectTransform parent; public RectTransform CreateUi() { GameObject go = new GameObject(); RectTransform rect = go.AddComponent<RectTransfrom>(); rect.setParent(parent); return rect; } public Image CreateImage() { return CreateUi().gameObject.AddComponent<Image>(); }
Image部品を追加するというより、RectTransformの入れ物を生成して、そのComponentとしてのImageを追加するというイメージですね。
完全にコードだけでUIを構築できれば流用性が増すのでやりたいところです。
ボタンへのクリック処理の追加も、ActionScriptみたいなイベントリスナー式もできるみたいで、
今まではいちいちC#スクリプトを作って、UI上で登録してましたが、非常に面倒なので、
全部スクリプトでやりたい所です。
Button button; button.onClick.AddListener(OnButtonClick); void onButtonClick() { Debug.Log("click!"); }
もしUIのライブラリを作るとすると、全体がtabになっていて、tabが切り替えられて、
各tabの中に、buttonやImageを配置できるような感じ。
例えば
Tab tb1=CreateTab(title); Tab tb2=tb1.AddTab(title2); Tab tb3=tb2.AddTab(title3);
こんな感じでtabが3つできて、
tb1.AddButton(buttonTitle1,OnClick,1); tb1.AddButton(buttonTitle2,OnClick,2); tb1.AddButton(buttonTitle3,OnClick,3);
これでtab1にボタンが3つできる。
tb1.SetActive(true)を実行すると自動的に他のtabが非表示になってtb1が表示される。
みたいな。