Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

主题类型变种

设计用户界面时,有时候会想要让某个 Control 节点看起来和 Theme 中定义的一般样式不同。每个控件节点都有主题属性覆盖项,可以让你针对单独的 UI 元素定义不同的样式。

../../_images/themecheck.png

如果你需要让若干控件都使用同一个自定义的外观,这样的做法很快就会变得难以管理。想象一下,你的项目里需要用到灰色、蓝色、红色变种的 Button。每在界面里添加一个按钮元素都需要进行设置,非常繁琐。

为了方便组织,更好地发挥主题的威力,你可以使用主题类型变种。它们用起来就像普通的主题类型,但无法自给自足,不是独立的,扩展自其他类型,称作基础类型。

还是上面的例子,你的主题可以为 Button 类型定义样式、颜色、以及字体,UI 中的所有按钮元素都会得到自定义。如果要再有灰色、红色、蓝色按钮,你就会创建一个新的类型,例如 GrayButton,然后把它标记为基础 Button 类型的变种。

类型变种可以在替换掉基础类型的某些内容的同时保留其他方面。它们还可以定义基础样式没有定义的属性。例如,你的 GrayButton 可以覆盖基础 Buttonnormal 样式,加上 Button 里没有定义的 font_color。控件会使用这两个类型的组合,并且优先使用类型变种。

备注

控件如何确定使用哪个类型、哪个主题、哪个主题项目,在《GUI 皮肤简介》一文的自定义项目部分有更详尽的描述。

创建类型变种

要创建主题变种,请打开主题编辑器,然后点击编辑器右侧类型下拉框旁的加号图标。在文本框中输入你给你的主题类型变种起的名字,然后点击添加类型

类型下拉框的下方是属性选项卡。请切换到图标是扳手和螺丝刀的选项卡。

../../_images/base_type.png

点击基础类型字段旁的加号。你可以在此处选择基础类型,一般就是控件节点的类名(例如 ButtonLabel 等)。类型变种还可以进行嵌套,扩展其他类型变种。这就和控件节点的继承基类风格一样。例如,CheckButton 继承 Button 的风格,因为对应的节点类型存在扩展关系。

选好基础类型之后,你应该就能在主题编辑器的其他选项卡中看到对应的属性了。你可以像往常一样去编辑。

使用类型变种

现在已经创建好了一个类型变种,你可以将其应用到你的节点上了。检查器面板中,在控件节点的 Theme 属性下,你可以找到 Theme Type Variation 属性。默认为空,表示只有基础类型会对这个节点起效。

You can either select a type variation from a dropdown list, or input its name manually. Variations appear on the list only if the type variation belongs to the project-wide theme, which you can configure in the project settings. For any other case you have to input the name of the variation manually. Click on the pencil icon to the right. Then type in the name of the type variation and click the check mark icon or press enter. If a type variation with that name exists it will now be used by the node.