Unity2020.1から Runtime UIElements が利用できるようになったので導入と表示までをまとめる
利用できると言ってもまで Preview 版なので、デバッグUIに利用する分には問題無いが
uGUI の代わりとしてはまだ使えなさそうでした
利用した Version
UnityVersion:2020.1.10f
UI Builder;1.0.0-preview.9
UI Toolkit;1.0.0-preview.9
導入
Runtime UIElements の導入は PackageManagerから行う
左上の「+」より Add package form git URL を選択
com.unity.ui
を追加
そうすると UI Toolkit が表示されるのでこれをインストール
ついでに UIBuilder も利用するので一緒にインストール
※ Preview なので設定で Preview 版を表示するようにする必要があります
これで必要なライブラリは揃いました
Runtime で利用する
uxml の準備
UI Elements を表示させるには uxml が必要なので UI Builder を利用して適当な uxml を作成する
とりあえずボタンでもあればいいので 左下の Library から Button を Viewport へドラッグ
するとボタンが表示されます
これを適当なところへ保存します
コンポーネントのセット
GameObject を作成し UIDocument
を AddComponent します
これが uGUI でいう Canvas
の代わりになります
UIDocument
には uxml と Panel Setting Asset が必要なので
右クリックメニューから Panel Setting Asset を作成します
特に値をいじる必要はありません
そして uxml と Panel Setting Asset をセットすると
Game Scene 上に表示されます
しかし再生してもボタンなのにクリックしても反応しません
クリックを有効にする
クリック等入力を有効にするためには、Event System(UI Toolkit)
が必要になります
これを UIDocument
と同じ GameObject に 追加してください
そうすることでクリックすると色が変わることが確認できます
クリック時にログを出す
クリック処理自体は Runtime じゃない場合と変わらない
下記のコードを記述して UIDocument
がある GameObejct に追加することでクリック時に特定の処理を呼ぶことができる
using UnityEngine; using UnityEngine.UIElements; public class UESample : MonoBehaviour { private void Awake() { var document = GetComponent<UIDocument>(); var button = document.rootVisualElement.Q<Button>(); button.clicked += () => Debug.Log("Click"); } }