You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过代码修改已应用StyleBox的Panel背景颜色?

如何编程修改Theme Overrides中Panel的StyleBox背景色

要修改Theme Overrides里Panel绑定的StyleBox背景色,核心是先拿到对应Theme对象中的StyleBox实例,再根据其具体子类调整颜色属性,以下是具体实现步骤和示例:

  • 步骤1:获取目标Panel的Theme对象
    通过Panel节点的get_theme()方法,获取当前它使用的Theme实例。
  • 步骤2:提取Theme Overrides中的StyleBox
    用get_stylebox()方法,传入控件类型("Panel")和你在Theme Overrides中设置的样式名称(通常默认是"panel",可在编辑器面板中确认)。
  • 步骤3:修改背景色
    大部分场景下用的是StyleBoxFlat(或其派生类如StyleBoxRounded),直接修改bg_color属性即可;若使用其他StyleBox子类,需对应调整其颜色相关属性。

GDScript 示例

# 假设已获取目标Panel节点的引用
var target_panel = $Panel
var panel_theme = target_panel.get_theme()

# 从Theme Overrides中取出对应的StyleBox
var panel_stylebox = panel_theme.get_stylebox("panel", "Panel")

# 校验类型并修改背景色
if panel_stylebox is StyleBoxFlat:
    # 设置为半透明绿色
    panel_stylebox.bg_color = Color(0, 1, 0, 0.7)
    # 触发重绘确保颜色即时生效
    target_panel.queue_redraw()

C# 示例

// 假设已获取目标Panel节点的引用
var targetPanel = GetNode<Panel>("Panel");
var panelTheme = targetPanel.GetTheme();

// 从Theme Overrides中取出对应的StyleBox
var panelStyleBox = panelTheme.GetStylebox("panel", "Panel");

// 校验类型并修改背景色
if (panelStyleBox is StyleBoxFlat flatStyleBox)
{
    // 设置为橙色
    flatStyleBox.BgColor = new Color(1, 0.6, 0);
    // 触发重绘确保颜色即时生效
    targetPanel.QueueRedraw();
}

补充说明:

  • 若你不确定样式名称,可在编辑器的Theme Overrides面板中查看对应Panel项的键名。
  • 对于StyleBoxRounded这类派生自StyleBoxFlat的子类,修改bg_color的方式完全一致。

内容的提问来源于stack exchange,提问作者Giobar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 18:44:54