UI Toolkit 基本4要素まとめチュートリアル(Unity 6対応)
(Label / TextField / Button / ListView を1つの記事で学ぶ)
Unity 6 では、UI Toolkit が新しい標準 UI として正式採用されました。
UI Builder を使うことで、コードを書かずに UI を視覚的に作成でき、uGUI より軽く、Flexbox によるレイアウトが圧倒的に扱いやすくなっています。
この記事では、実務・学習ともに使用頻度の高い 4つの基本UI要素 を1つのサンプルにまとめて解説します。
- Label(テキスト表示)
- TextField(ユーザー入力)
- Button(クリックで動作)
- ListView(リスト表示)
UI Toolkit を初めて学ぶ方向けに、UI Builder と C# の連携を中心に整理しています。
最初に学習してほしい記事
1. UXML に UI を配置する(UI Builder)
UI Builder のプレビュー領域(Viewport)に配置します。
① Label(name=“messageLabel”)
- 初期メッセージ:「ここにメッセージが表示されます」
- テキストをあとで C# から変更します。
② TextField(name=“inputField”)
- プレースホルダ:「名前を入力」
- ユーザー入力を取得します。
③ Button(name=“addButton”)
- text:「リストに追加」
- クリックイベントで ListView に項目を追加します。
④ ListView(name=“itemList”)
配置しただけでは「空のListView」なので、
C# から ItemsSource を設定して動的に表示させます。
2. UIController.cs を作成する(C# で動かす)
using UnityEngine;
using UnityEngine.UIElements;
using System.Collections.Generic;
public class UIController : MonoBehaviour
{
Label messageLabel;
TextField inputField;
Button addButton;
ListView itemList;
// ListView に表示するデータ
List<string> items = new List<string>();
void OnEnable()
{
var doc = GetComponent<UIDocument>();
var root = doc.rootVisualElement;
// UXML の UI 要素を取得
messageLabel = root.Q<Label>("messageLabel");
inputField = root.Q<TextField>("inputField");
addButton = root.Q<Button>("addButton");
itemList = root.Q<ListView>("itemList");
// Button のクリックイベント登録
addButton.clicked += OnAddButtonClicked;
// ListView セットアップ
itemList.makeItem = () => new Label();
itemList.bindItem = (el, i) => (el as Label).text = items[i];
itemList.itemsSource = items;
}
void OnAddButtonClicked()
{
var text = inputField.value;
if (string.IsNullOrWhiteSpace(text))
{
messageLabel.text = "入力が空です。文字を入力してください。";
return;
}
items.Add(text);
itemList.Rebuild();
messageLabel.text = $"追加しました:{text}";
inputField.value = "";
}
}
3. ListView の仕組み(簡単に理解する)
UI Toolkit の ListView は データバインディング式 です。
- itemsSource … リストの中身(データ)
- makeItem … UI の1行分を作る
- bindItem … 1行にデータを紐づける
という構造になっています。
Unity 6 の ListView は軽量で高速なため、uGUI の ScrollView より快適に扱えます。
4. 実行して動作確認
Play を押すと:
- TextField に入力
- ボタンを押す
- ListView に追加される
- Label にメッセージが表示される
という流れになります。
5. 構成図
[UI Builder]
main.uxml
├─ Label (messageLabel)
├─ TextField (inputField)
├─ Button (addButton)
└─ ListView (itemList)
[Unity Scene]
GameObject
├─ UIDocument (main.uxml)
└─ UIController.cs
PanelSettings は前回のものを同じく使用します。
6. まとめ
- Label は label.text = “文字列" で更新可能
- TextField は inputField.value で取得
- Button は clicked += でイベント登録
- ListView は makeItem / bindItem / itemsSource の3要素で構築
- UI Toolkit は最初から日本語対応しやすく、デザインも調整しやすい
- uGUI より軽く、Flex レイアウトで複雑な画面も作りやすい


ディスカッション
コメント一覧
まだ、コメントがありません