UIElements开发人员指南9 样式(Style)和Unity样式表(style sheets)

样式(Style)和Unity样式表(style sheets)

每个VisualElement都包含样式属性,用于设置元素的尺寸以及元素在屏幕上的绘制方式,例如backgroundColorborderColor

样式属性可以在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属性的相似性。

发布了66 篇原创文章 · 获赞 158 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/AndrewFan/article/details/98595932