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

如何用GDScript为Godot项目的菜单和按钮添加颜色?

在Godot中用GDScript给菜单/按钮设置颜色(类CSS实现)

你熟悉CSS的话,Godot里的颜色设置逻辑确实能和CSS对齐,你找到的Color.html()是核心工具,完全兼容CSS的十六进制颜色写法,能满足你的需求。下面分两种常用场景给你具体实现:


1. 直接设置控件颜色(类CSS行内样式)

这种方式类似CSS的style="color: #xxx",直接给控件的对应属性赋值:

按钮(Button)示例

extends Button

func _ready():
    # 背景色:对应CSS的 background-color
    self.modulate = Color.html("#2c3e50")
    # 文字颜色:对应CSS的 color
    self.label.modulate = Color.html("#ecf0f1")
    # 边框色:对应CSS的 border-color(需先开启按钮的边框属性)
    self.border_color = Color.html("#3498db")
    # 悬停状态色:对应CSS的 :hover 伪类
    self.hover_color = Color.html("#34495e")

菜单(MenuButton/PopupMenu)示例

extends MenuButton

func _ready():
    # 菜单按钮本身的颜色规则和普通Button一致
    self.modulate = Color.html("#9b59b6")
    self.label.modulate = Color.html("#ffffff")
    
    # 下拉菜单的选项颜色设置
    var popup = self.get_popup()
    # 选项文字色:对应CSS的 color
    popup.font_color = Color.html("#2c3e50")
    # 选项悬停背景色:对应CSS的 :hover background
    popup.hover_color = Color.html("#f39c12")
    # 选项选中背景色:对应CSS的 :active background
    popup.selected_color = Color.html("#e67e22")

2. 自定义全局主题(类CSS外部样式表)

如果想实现类似CSS样式表的批量复用,推荐用Godot的Theme系统,相当于全局样式规则:

步骤1:创建全局主题资源

  1. 在项目管理器右键 → 新建资源 → 选择Theme
  2. 保存为global_theme.tres

步骤2:用GDScript添加全局颜色规则(类CSS选择器)

# 全局初始化脚本,可挂在项目根节点上
extends Node

func _ready():
    var global_theme = load("res://global_theme.tres")
    
    # 给所有Button设置默认样式(类似CSS的 Button { ... })
    global_theme.set_color("modulate", "Button", Color.html("#2c3e50"))
    global_theme.set_color("label_modulate", "Button", Color.html("#ecf0f1"))
    global_theme.set_color("hover_color", "Button", Color.html("#34495e"))
    
    # 给所有PopupMenu设置默认样式(类似CSS的 PopupMenu { ... })
    global_theme.set_color("font_color", "PopupMenu", Color.html("#2c3e50"))
    global_theme.set_color("hover_color", "PopupMenu", Color.html("#f39c12"))
    
    # 将主题应用到整个项目
    get_tree().root.theme = global_theme

关于你提供的Color.html()代码的说明

你看到的示例完全可用,它支持多种CSS兼容的颜色格式:

  • 标准十六进制:Color.html("#0000ff")(对应CSS的#0000ff)
  • 短写十六进制:Color.html("#0F0")(对应CSS的#0F0,等价于#00FF00)
  • 带透明度的十六进制:Color.html("663399cc")(对应CSS的#663399cc,最后两位为透明度,范围00-ff)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:16:13