UnityのUI ToolkitでGroupBoxを使って自由なデザインのラジオボタン作る方法についてまとめました。
Unity 2022.2.17
はじめに
いくつかの選択肢から一つを選ぶUIを作る際には、下図のようにラジオボタンがよく使われます。
RadioButtonGroup
を使うと、このようなラジオボタンによる選択肢を簡単に作ることができます。
次の記事はRadioButtonGroup
による実装方法を紹介した記事です。
RadioButtonGroup
を使った実装は非常に手軽ですが、一方でラジオボタンのレイアウトが単純なテキストだけになり、自由に変更できないという欠点もあります。
これに対してGroupBox
を使うと、自由なレイアウトでラジオボタンを作ることができます。
本記事ではこの方法についてまとめます。
実装する
早速GroupBox
を使ってラジオボタンを実装してみます。
using UnityEditor; using UnityEngine; using UnityEngine.UIElements; public sealed class Example : EditorWindow { private void CreateGUI() { // GroupBoxを作る var groupBox = new GroupBox("Group Box"); // RadioButtonを持つVisualElementを作って、GroupBoxの子要素にする var first = CreateRadioButtonContainer("First", _ => Debug.Log("First")); var second = CreateRadioButtonContainer("Second", _ => Debug.Log("Second")); var third = CreateRadioButtonContainer("Third", _ => Debug.Log("Third")); groupBox.Add(first); groupBox.Add(second); groupBox.Add(third); // 作ったGroupBoxをWindowのrootVisualElementに追加する rootVisualElement.Add(groupBox); } private VisualElement CreateRadioButtonContainer(string text, EventCallback<ChangeEvent<bool>> callback) { var root = new VisualElement { style = { flexDirection = FlexDirection.Row } }; // RadioButtonとTextFieldを作って、VisualElementの子要素にする var radioButton = new RadioButton(); radioButton.RegisterValueChangedCallback(callback); var textField = new TextField { value = text, style = { flexGrow = 1 } }; root.Add(radioButton); root.Add(textField); return root; } [MenuItem("Window/Example")] private static void Open() { GetWindow<Example>(); } }
説明はコメントに書きました。
GroupBox
を作り、その下にRadioButton
とTextField
を持つVisualElement
を三つ追加しています。
実行結果
Window > Exampleからこのウィンドウを開くと、以下の結果が得られます。
正常に作れていることを確認できました。