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
相关产品推荐
相关产品推荐

