Version: Unity 6.0 (6000.0)
语言 : 中文
USS 最佳实践
在 UI 工具包中应用遮罩效果

主题样式表 (TSS)

主题样式表 (TSS) 文件是常规 USS 文件。UI 工具包将 TSS 视为不同的资源类型,并将其用于管理目的。

常规 USS 语法和格式适用于 TSS 文件,但主题文件通常通过 @import 规则包含对其他 USS 文件的引用。

注意:USS 文件还支持 @import 规则。

创建 TSS

您可以为不同的主题创建不同的 TSS 文件,并在运行时在不同文件之间切换。通常,应将 USS 用于样式。为不同平台或设备自定义外观时,或者如果您的游戏或应用程序支持多种语言,为不同语言使用不同字体时,应考虑 TSS。

注意:将第一个 UIDocument 添加到项目中的游戏对象时,它会在 Assets/UI Toolkit/UnityThemes/UnityDefaultTheme.tss 处生成默认运行时主题资源。虽然可以从头开始创建 TSS,但要使所有默认__ UI__(即用户界面,User Interface)让用户能够与您的应用程序进行交互。Unity 目前支持三种 UI 系统。更多信息
See in Glossary
控件正常工作,必须导入默认运行时主题,然后覆盖或添加新样式来创建自定义主题。

要创建新 TSS:

  1. 使用自定义样式创建一个或多个 USS 文件。

  2. 执行以下操作之一:

    • 选择资源 (Assets) > 创建 (Create) > UI 工具箱 (UI Toolkit) > TSS 主题文件 (TSS Theme File) 可创建一个空主题文件并导入默认主题
    • 选择资源 (Assets) > 创建 (Create) > UI 工具箱 (UI Toolkit) > 默认运行时主题文件 (Default Runtime Theme File) 以创建默认运行时主题文件的副本。如果需要,可以重命名文件。
  3. 将样式 USS 文件导入主题。

预览 TSS

您的自定义主题也会显示在 UI Builder 中 Viewport 的主题列表中。要预览主题,请从 Viewport 中选择主题。

应用 TSS

您可以像使用 USS 一样在 UXMLC# 中引用 TSS。

还可以将 TSS 设置为面板设置资源的默认主题。如果您有多个面板设置,则每个面板都可以使用不同的 TSS 文件。

注意:如果为面板设置资源设置了 TSS,则不会使 TSS 成为整个项目的全局样式。您仍然需要在 UXML 或 C# 中引用 TSS。

导入主题

您可以使用 TSS 资源的 Inspector 窗口或 @import 规则导入主题。

注意:如果在当前 TSS 和导入的样式表中都定义了 USS 变量或样式,则当前 TSS 会覆盖导入的样式表。

使用 Inspector 窗口导入主题

  1. 选择 TSS 资源。
  2. 转到检视面板 (Inspector) 窗口 > 继承的主题 (Inherited Themes)
  3. 选择 +。这会添加新的引用字段。
  4. 在参考字段中选择列表图标。此时将显示一个下拉列表,其中包含项目中的所有样式表。
  5. 选择要使用的样式表。
  6. 选择应用 (Apply)

使用 @import 规则导入默认主题

要导入默认的 Unity 运行时主题,必须使用以下语法:

@import url("unity-theme://default");

注意:此语法中的 URL 是一种特殊情况,它引用引擎中的内置默认主题。不能将此语法用于任何其他主题。

使用 @import 规则导入其他主题

要导入默认主题以外的主题或 USS 文件,请使用以下语法:

@import url("<path-to-file>/<file-name-with-extension>");

您可以使用相对路径或绝对路径:

  • 绝对路径从项目的 Assets 文件夹开始,并以 /project://database/ 开头。例如,/Assets/myFolder/myFile.ussproject://database/Assets/myFolder/myFile.uss
  • 相对路径从当前文件开始,不包含 /。例如,../myFolder/myFile.uss

注意:要从包引用文件,请使用从 Packages 文件夹开始的包文件的绝对路径。例如,/Packages/com.unity.package.name/file-name.ussproject://database/Packages/com.unity.package.name/file-name.uss。对于包名称,必须使用格式 com.unity.package.name(而非 package name)。

其他资源

USS 最佳实践
在 UI 工具包中应用遮罩效果