はじめに
今回は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 style sheet(USS)を追加する
C#スクリプトからUSS
を追加で適応させることができます。
VisualElement label = new Label("Label Sample"); StyleSheet uss = AssetDatabase.LoadAssetAtPath<StyleSheet>("Assets/Editor/label.uss"); label.styleSheets.Add(uss);