SuperAPI AI 工具集

ui-theming

设计与创作

查看项目

更新于 10-16 22:43

技能介绍

UI Theming 是一套关于游戏界面主题化的专家蓝图,核心目标是通过 Theme 资源、StyleBox 样式、字体管理和主题覆盖系统,为 Godot 项目定义一致的 UI 视觉识别。

【用途】 该技能用于指导开发者建立可维护、可复用、可动态切换的 UI 主题体系,避免样式散落在各个节点中导致的重复与不可维护问题。

【主要能力】

  1. Theme 资源:在 Project Settings → GUI → Theme 中创建新的 Theme 资源,将其分配给根 Control 节点,使所有子节点自动继承主题。
  2. StyleBox 样式:支持 StyleBoxFlat 与 StyleBoxTexture,用于定义按钮等控件的背景、圆角等视觉样式。示例中通过 StyleBoxFlat 设置 bg_color 与四个圆角半径,并通过 add_theme_stylebox_override("normal", style) 应用到按钮。
  3. 自定义字体:通过 load("res://fonts/my_font.ttf") 加载字体,并使用 add_theme_font_override("font", font) 与 add_theme_font_size_override("font_size", 24) 覆盖标签字体与字号。
  4. 主题继承与覆盖:子 Control 若设置自定义主题会忽略父主题;建议在根 Control 上设置主题,子节点自动继承,除非需要局部覆盖。
  5. 随附脚本:global_theme_manager.gd 提供带动态切换、主题变体和回退处理的专家级主题管理器;ui_scale_manager.gd 负责运行时主题切换以及 DPI/分辨率缩放管理。

【使用方式】 在 Godot 项目中创建 Theme 资源并分配给根 Control 节点,在主题资源中统一定义颜色、StyleBox 与字体,通过继承让子节点复用;仅在局部需要差异时使用 add_theme_*_override。动态切换与缩放可参考随附的两个 GDScript 脚本。

【适用场景】 需要统一 UI 视觉风格的 Godot 游戏项目;需要支持主题动态切换、主题变体、DPI 与分辨率适配的界面;需要在多个控件间复用样式定义以减少重复对象的项目。

【限制与注意事项】 技能明确列出多项禁止做法:不要在 _ready() 中为大量节点创建 StyleBox(例如 100 个按钮各调用 StyleBoxFlat.new() 会产生 100 个重复对象),应在主题资源中创建一次并通过继承复用;不要忘记主题继承;不要在 StyleBox 中硬编码颜色,应在主题中定义颜色并通过 theme.get_color("primary", "Button") 引用;不要对全局样式使用 add_theme_override,应定义在 Theme 资源中以自动传播;不要跳过 corner_radius_all 快捷属性,可用 corner_radius_all = 5 设置统一圆角(仅 StyleBoxFlat);不要在渲染过程中修改主题,主题应在初始化或用户操作时加载,避免持续重新布局带来的性能损耗。

该技能基于 Godot 引擎的 GUI 主题化能力,官方文档参考为 Godot Docs: GUI Theming。