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

Godot 4:使用GDScript修改按钮字体颜色主题覆盖失效

Godot按钮文字淡入失效问题求助

我是Godot新手,下面的代码可能还有优化空间,欢迎大家提建议。我想实现场景加载时按钮的淡入效果,写了如下GDScript脚本:

extends Button

@export_category("Fade Button")
@export var theFadeButton: Button = self
@export var fadeSpeed: float = 0.15
@export var fadeInWhenReady: bool
@export var fadeInLoadWaitSeconds: float = 0
var defaultBackgroundAlpha: float = 1
var defaultTextAlpha: float = 1
var fadingIn: bool = false
var fadingOut: bool = false


# Called when the node enters the scene tree for the first time.
func _ready():
    defaultTextAlpha = theFadeButton.get("theme_override_colors/font_color").a
    defaultBackgroundAlpha = theFadeButton.get("theme_override_styles/normal").bg_color.a
    if fadeInWhenReady:
        fadeIn(fadeInLoadWaitSeconds)


# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
    if fadingIn:
        theFadeButton.get("theme_override_styles/normal").bg_color.a += fadeSpeed * delta * (defaultBackgroundAlpha / defaultTextAlpha)
        theFadeButton.get("theme_override_colors/font_color").a += fadeSpeed * delta
        if theFadeButton.get("theme_override_styles/normal").bg_color.a >= defaultBackgroundAlpha:
            theFadeButton.get("theme_override_styles/normal").bg_color.a = defaultBackgroundAlpha
            theFadeButton.get("theme_override_colors/font_color").a = defaultTextAlpha
            fadingIn = false
            
    if fadingOut:
        theFadeButton.get("theme_override_styles/normal").bg_color.a -= fadeSpeed * delta * (defaultBackgroundAlpha / defaultTextAlpha)
        theFadeButton.get("theme_override_colors/font_color").a -= fadeSpeed * delta
        if theFadeButton.get("theme_override_styles/normal").bg_color.a < 0:
            theFadeButton.get("theme_override_styles/normal").bg_color.a = 0
            theFadeButton.get("theme_override_colors/font_color").a = 0
            fadingOut = false

func fadeIn(waitForSeconds: float = 0):
    theFadeButton.get("theme_override_styles/normal").bg_color.a = 0
    theFadeButton.get("theme_override_colors/font_color").a = 0
    if waitForSeconds != 0:
        await get_tree().create_timer(waitForSeconds).timeout
    fadingIn = true

func fadeOut(waitForSeconds: float = 0):
    theFadeButton.get("theme_override_styles/normal").bg_color.a = defaultBackgroundAlpha
    theFadeButton.get("theme_override_colors/font_color").a = defaultTextAlpha
    if waitForSeconds != 0:
        await get_tree().create_timer(waitForSeconds).timeout
    fadingOut = true

我已经在编辑器里勾选了Theme Overrides选项并设置了相关颜色参数,目前按钮背景的淡入功能正常,但文字颜色完全没变化,附上编辑器截图参考:

编辑器截图1
编辑器截图2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 05:59:52