はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】UI ToolkitにてC#スクリプトからStylesを適応する

はじめに

今回はUI ToolkitのVisualElementに対してC#スクリプトからスタイルを適応する方法について紹介したいと思います。

やり方

VisualElement.styleを利用する

VisualElement.styleを通して操作します。USSで既に指定していた値も上書きされます。

// サンプルコード
VisualElement label = new Label("Label Sample");
label.style.backgroundColor = Color.red;
public UIElements.IStyle style

UIElements.VisualElement-style - Unity スクリプトリファレンス

具体的に何が変えられるかはUIElements.IStyleをみれば分かります。公式ドキュメントの表で分かりやすく一覧になっているのでチェックしてみてください。
docs.unity3d.com

This interface provides access to a VisualElement inline style data.

Reading properties from this object will read from the inline style data for this element. To read the style data computed for the element use IComputedStyle interface. Writing to a property will mask the value coming from USS with the provided value however other properties will still match the values from USS.

// DeepL翻訳
このインターフェイスは VisualElement インライン・スタイル・データへのアクセスを提供する。

このオブジェクトからプロパティを読み取ると、この要素のインライン スタイル データが読み取られます。要素に対して計算されたスタイル データを読み取るには、IComputedStyle インターフェイスを使用します。プロパティへの書き込みは、USS からの値を指定された値でマスクしますが、他のプロパティは依然として USS からの値と一致します。

Unity - Scripting API: IStyle

Unity style sheet(USS)を追加する

C#スクリプトからUSSを追加で適応させることができます。

VisualElement label = new Label("Label Sample");
StyleSheet uss = AssetDatabase.LoadAssetAtPath<StyleSheet>("Assets/Editor/label.uss");
label.styleSheets.Add(uss);