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

如何在Godot中编辑网格所有文本标签并实现重置清空

批量处理Wordle类游戏网格Label内容方案

问题描述

我正在开发一款类似Wordle的网格类游戏,需要将每个网格空间的Label内容改为用户输入。已实现单个Label的修改,但不清楚如何在_ready时将所有Label设为空;虽可通过侧边栏手动清空,但希望通过代码实现游戏重置时的批量清空。目前尝试的代码仅能修改指定Label,想了解是否可通过编辑网格的子节点来实现批量操作。

尝试的代码:

func _input(event):
    if event is InputEventKey and event.is_pressed():
        var key_text = OS.get_keycode_string(event.get_physical_keycode_with_modifiers())
        print(key_text)
        set_letter(key_text)

func set_letter(letter: String):
    $VBoxContainer/MiddleHBox/MidVBox/GridContainer/Space1/Label.text = letter

解决方案

1. 批量清空所有Label

通过遍历GridContainer的子节点,逐个找到对应Label并清空文本,可在初始化和重置时调用:

func _ready():
    # 游戏初始化时清空网格
    reset_grid()

func reset_grid():
    # 获取GridContainer节点
    var grid_container = $VBoxContainer/MiddleHBox/MidVBox/GridContainer
    # 遍历所有Space子节点
    for space_node in grid_container.get_children():
        # 查找当前Space下的Label节点(避免节点不存在报错)
        var target_label = space_node.get_node_or_null("Label")
        if target_label:
            target_label.text = ""

2. 优化单个Label输入逻辑(可选)

如果需要按顺序输入字符到不同网格,可维护一个当前输入索引,避免硬编码Space节点名称:

var current_input_index = 0

func _input(event):
    if event is InputEventKey and event.is_pressed():
        var key_text = OS.get_keycode_string(event.get_physical_keycode_with_modifiers())
        # 只处理单个字母输入(根据游戏需求调整过滤规则)
        if key_text.length() == 1 and key_text.is_alpha():
            set_letter(key_text.upper())

func set_letter(letter: String):
    var grid_container = $VBoxContainer/MiddleHBox/MidVBox/GridContainer
    # 确保索引在有效范围内
    if current_input_index >= grid_container.get_child_count():
        return
    # 获取目标Space节点
    var target_space = grid_container.get_child(current_input_index)
    var target_label = target_space.get_node_or_null("Label")
    if target_label:
        target_label.text = letter
        # 移动到下一个输入位置
        current_input_index += 1

注意事项

  • 确保GridContainer下的每个网格节点(Space1、Space2...)结构一致,都包含名为Label的子节点。
  • get_children()返回的节点顺序与编辑器中节点的排列顺序一致,需保证该顺序与游戏网格的输入顺序匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 04:56:10