Version: 2020.3
UQuery
USS 选择器

Unity style sheets (USS)

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

Style properties are either set in C# or from a style sheet. Style properties have their own data structure (IStyle interface).

UI 工具包支持用 USS(Unity 样式表)编写的样式表。USS 文件是受 HTML 中的层叠样式表 (CSS) 启发的文本文件。USS 格式与 CSS 类似,但 USS 包括一些覆盖和自定义以便于更好地与 Unity 协同工作。

本节详细介绍 USS、其语法以及与 CSS 的差异。

For a quick reference of supported USS properties, see the USS properties reference.

Unity 样式表的定义

Unity 样式表 (USS) 的基本构成元素如下:

  • USS is a text file recognized as an asset. The text file must have the .uss extension.
  • USS only supports style rules.
  • Style rules are composed of a selector and a declaration block.
  • 选择器确定样式规则影响的视觉元素。
  • 由花括号括起来的声明块包含一个或多个样式声明。每个样式声明都由属性和值组成。每个样式声明以分号结尾。
  • 每个样式属性的值是一个字面值,在解析时,必须与目标属性名称匹配。

样式规则的一般语法如下:

selector {
  property1:value;
  property2:value;
}

将 USS 附加到视觉元素

You can attach a Unity style sheet (USS) to any visual element. Style rules apply to the visual element and all its descendants. Style sheets are also re-applied automatically when necessary.

Load StyleSheet objects with standard Unity APIs such as AssetDatabase.Load() or Resources.Load(). Use the VisualElement.styleSheets.Add() method to attach style sheets to visual elements.

如果在 EditorWindow 运行时修改 USS 文件,则会立即应用样式更改。

样式的应用过程对于使用 UI 工具包 的开发者是透明的。需要时(层级视图更改、样式表重新加载)会自动重新应用样式表。

样式与规则匹配

When you define a style sheet, you can apply it to a Visual Tree. Selectors match against elements to resolve which properties apply from the USS file. If a selector matches an element, the style declarations apply to the element.

例如,以下规则匹配任何 Button 对象:

Button {
  width: 200px;
}

VisualElement 匹配

UI 工具包使用以下条件将视觉元素与其样式规则相匹配:

  • Its C# class name (always the most derived class).
  • A name property that’s a string.
  • A class list represented as a set of strings.
  • VisualElement 在视觉树中的祖先和位置。

以上这些特征可用于样式表中的选择器。

如果您熟悉 CSS,应该可以看出其与 HTML 标签名称、id 属性和 class 属性之间的相似性。

UQuery
USS 选择器