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

Godot 3.5.1:如何从PlayerTable树节点提取单元格数据创建Player实例?

解决Godot 3.5.1 Tree节点单元格数据提取问题

你当前代码的核心问题是对Tree节点的API使用有误:

  • get_child_count() 获取的是Tree节点自身的子节点(比如列标题控件),而非表格的数据行数量
  • get_item_at_position() 是用于获取鼠标坐标对应位置的TreeItem,不是通过行列索引提取单元格内容的方法,所以返回null

正确的做法是通过Tree的根节点遍历数据行,再用get_text()方法提取对应列的内容,修改后的代码如下:

func create_players():
    # 获取Tree的根节点,所有数据行都是根节点的子节点
    var root = player_table.get_root()
    
    # 遍历所有数据行(根节点的子节点数量就是行数)
    for i in range(root.get_child_count()):
        var row_item = root.get_child(i)
        
        # 通过列索引获取对应单元格文本
        var player_name = row_item.get_text(0)
        var player_species = row_item.get_text(1)
        var player_color = row_item.get_text(2)
        var player_type = row_item.get_text(4)
        
        # 打印测试
        print("i = " + str(i))
        print("player_name = " + player_name)
        print("player_species = " + player_species)
        print("player_color = " + player_color)
        print("player_type = " + player_type)
        
        # 创建Player实例(假设Player类有对应的构造方法或属性赋值)
        var new_player = Player.new()
        new_player.name = player_name
        new_player.species = player_species
        new_player.color = player_color
        new_player.type = player_type
        # 后续可以将实例加入数组或其他容器

关键API说明:

  • Tree.get_root():返回Tree的根TreeItem,所有数据行都是该节点的子节点
  • TreeItem.get_child(index):获取指定索引的子节点(即数据行)
  • TreeItem.get_text(column):获取指定列的单元格文本内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:05:22