UIToolkit
#Unity
ランタイムで使う
チュートリアル
とっかかりがむずいので↓をフォローすると良い
https://docs.unity3d.com/ja/2021.3/Manual/UIE-HowTo-CreateRuntimeUI.html
Scene上ではUIDocumentコンポーネントを付けてこれにuxmlファイルをアタッチする
C#からの操作はUIDocumentコンポーネントを通してrootVisualElementを取得して...という流れになる
これも読むと良さそう
https://docs.unity3d.com/ja/2023.2/Manual/UIE-Transitioning-From-UGUI.html
Prefabを使う場合はPrefabにUIDocumentをつける
Prefab単位でuxmlをつくる感じ
Flexbox
https://developer.mozilla.org/ja/docs/Learn/CSS/CSS_layout/Flexbox
https://light11.hatenadiary.com/entry/2023/05/17/194042
フォント
Font
TMPは使えないがSDFフォントアセットは使える(はず)
ttfまたはotfをインポートした後にFontAssetを作成する必要がある
TMPのFontAssetとは別で、インポートしたフォントファイルとも別物なので注意
フォントファイルを右クリックしてCreate > TextCore > FontAsset
SDF、Bitmap、Colorが選べる
https://docs.unity3d.com/ja/2022.2/Manual/UIE-font-asset.html にベストプラクティスが書いてある
ASCIIで十分な場合はstaticなSDFを作っておけばよいのではなかろうか
ドラッグ
https://qiita.com/ohbashunsuke/items/7692af357328998ac9ca
VisualElementの座標系をAbsoluteにしないと駄目
Painter2D
https://docs.unity3d.com/6000.0/Documentation/ScriptReference/UIElements.Painter2D.html
ベジェ曲線
https://light11.hatenadiary.com/entry/2024/01/17/194131
ビルトインのコントロールの見た目を編集する
UnityDefaultRuntimeTheme.tss をインポートする場合
対象のSliderに.my-slider のようなクラスを当てる
Sliderが自動で生成する子要素のスタイルを変更するには .my-slider > Label とかを書かないと駄目で結構大変
https://www.youtube.com/watch?v=pUFG1u6dNQ4
> を使った方がパフォーマンス的には良いらしい
インポートしない場合
Unityが定義したクラスをコピペしてきて改造する、というのでもできそう
Sliderが自動生成するコンポーネントに適用されるクラスを変更する
Sliderを継承したクラスを用意して生成時に子要素のクラスをClearしてから自前のクラスをAddするとよさそう