每个 VisualElement
都包含样式属性,这些属性用于设置元素的尺寸以及元素在屏幕上的绘制方式,例如 backgroundColor
或 borderColor
。
样式属性可以在 C# 中设置,也可以在样式表中设置。样式属性在其自己的数据结构(IStyle
接口)中重新分组。
UIElements 支持用 USS(Unity 样式表)编写的样式表。USS 文件是受 HTML 中的层叠样式表 (CSS) 启发的文本文件。USS 格式与 CSS 类似,但 USS 包括一些覆盖和自定义以便于更好地与 Unity 协同工作。
本节详细介绍 USS、其语法以及与 CSS 的差异。
Unity 样式表 (USS) 的基本构成元素如下:
.uss
扩展名。样式规则的一般语法如下:
selector {
property1:value;
property2:value;
}
USS 语法与 CSS3 的 W3C 规范相一致。UIElements 使用 ExCSS 开源解析器来解析 USS 声明。ExCSS 开源解析器有自己的测试套件。
可以将 Unity 样式表 (USS) 附加到任何视觉元素。样式规则适用于视觉元素及其所有后代。必要时,还会自动重新应用样式表。
应使用 AddStyleSheetPath()
方法将 USS 与视觉元素相关联。还必须提供 AddStyleSheetPath()
方法以及相对于包含文件夹的路径。为了让 Unity 识别 USS 文件,文件必须放在 Resources
或 Editor Default Resources
文件夹下的 Assets
文件夹中。
如果在 EditorWindow
运行时修改 USS 文件,则会立即应用样式更改。
定义样式表后,可以将其应用于 UIElements 视觉元素树。
在此过程中,选择器将与元素进行对比,从而解析从 USS 文件应用的属性。如果选择器与元素匹配,则样式声明将应用于元素。
例如,以下规则匹配任何 Button
对象:
Button {
width: 200px;
}
应使用 VisualElement.AddStyleSheetPath()
方法将样式表附加到子树。
UIElements 使用以下条件将视觉元素与其样式规则相匹配:
name
属性以上这些特征可用于样式表中的选择器。
如果您熟悉 CSS,应该可以看出其与 HTML 标签名称、id
属性和 class
属性之间的相似性。