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

Godot 4.3:跨脚本调用Setter无法更新RichTextLabel

问题解决方法

1. 修复Setter的递归调用问题

你的Setter函数中直接对money赋值会触发递归调用,导致逻辑异常。需改用私有变量存储实际值:

# 私有变量存储实际金额数值
var _money : int = 0

# 公开的money属性,绑定Setter与Getter
var money : int:
    set(value):
        _money = value
        money_format()
    get():
        return _money

2. 确保money_format正确更新RichTextLabel

检查money_format函数是否正确获取目标节点并更新文本,示例如下:

func money_format():
    # 实现千分位格式化逻辑
    var formatted_num = str(_money).reverse().replace("%3", "$1,").reverse()
    # 确保节点引用正确(示例为当前脚本节点的子节点)
    $RichTextLabel.text = formatted_num
    # 若使用BBCode格式,需开启节点的bbcode_enabled并使用bbcode_text赋值
    # $RichTextLabel.bbcode_text = formatted_num

3. 验证跨脚本的节点引用

跨脚本访问MoneyText.money时,需确认:

  • 若MoneyText是全局自动加载脚本,已添加至项目设置的「自动加载」列表
  • 若为节点实例引用,MoneyText指向的是挂载该脚本的正确节点对象

4. 检查RichTextLabel的显示状态

  • 确认节点的visible属性为true
  • 若使用BBCode格式,需开启节点的bbcode_enabled选项
  • 排查节点是否被其他控件遮挡

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 05:22:06