样式(Style)和Unity样式表(style sheets)
每个VisualElement
都包含样式属性,用于设置元素的尺寸以及元素在屏幕上的绘制方式,例如backgroundColor
或borderColor
。
样式属性可以在C#中设置,也可以在样式表中设置。样式属性将会在其自己的数据结构(IStyle
接口)中重新组装。
UIElements支持用USS编写的样式表(Unity样式表)。USS文件受到HTML中层叠样式表(CSS)的启发,格式与CSS类似,但USS包括覆盖和自定义以更好地与Unity协同工作。
本节包含有关USS及其语法的详细信息,以及与CSS相比时的差异。
Unity样式表的定义
Unity样式表(USS)的基本构建规则如下:
- USS是被识别为资产的文本文件,文件必须具有
.uss
扩展名。 - USS仅支持样式规则。
- 样式规则由选择器和声明块组成。
- 选择器标识了样式规则将会影响的那些可视元素。
- 由大括号括起来的声明块包含一个或多个样式声明。每个样式声明都由属性和值组成。每个样式声明以分号结尾。
- 每个样式属性的值是一个文字,在解析时,必须与目标属性名称匹配。
样式规则的一般语法是:
selector {
property1:value;
property2:value;
}
将USS附加到可视元素
您可以将Unity样式表(USS)附加到任何可视元素。样式规则适用于可视元素及其所有子类。必要时,还会自动重新应用样式表。
可以使用标准Unity API 加载StyleSheet
对象,例如AssetDatabase.Load()
或Resources.Load(),可以
使用VisualElement.styleSheets.Add()
方法将样式表附加到可视元素。
如果在EditorWindow
运行时修改USS文件,则会修改的结果会立刻得到应用。
样式应用的处理过程对使用UIElements的开发人员是透明的,样式表会在需要时自动重新应用(如:层次结构更改,样式表重新加载等)。
样式匹配规则
定义样式表后,可以将其应用于可视元素的UIElements树。
在此过程中,选择器将与元素进行匹配,以从USS文件解析需要应用的属性。如果选择器与元素匹配,则样式声明将应用于元素。
例如,以下规则匹配任何Button
对象:
Button {
width: 200px;
}
可视元素匹配
UIElements使用以下条件将可视元素与其样式规则相匹配:
- 它的C#类名(大部分情况下是派生类)
- 名为
name
的字符串属性 - 表示为一组字符串的class列表
- VisualElement在可视树中层次中的相对位置。
这些特征可用于样式表中的选择器。
如果您熟悉CSS,则可以看到它们与HTML的tag名称,id
属性和class
属性的相似性。