Godot库存数组,如何填充第一个元素
Godot inventory array, how to fill the first element
我正在 Godot 中制作数组清单。我有六个 null
元素。我首先使用 int find(variant,int from 0)
找到第一个空索引。然后我使用 insert(position,variant)
来填充那个空索引。但是我发现它一直在它旁边找到 null
并最终将它们全部填满。因此,结果是一个完全填充的数组。我如何让它只填充第一个发现的一次?比如我选了一个项目后,一次填满一个槽位。
insert
方法,插入元素。因此 Array
将包含它拥有的所有元素,加上您插入的元素(Array
将再包含一个元素)。 这就是文档提到它在较大阵列上变慢的原因。
因此,insert
永远不会摆脱 Array
拥有的任何 null
(或任何其他元素)。这就是为什么你总是发现相同的东西。
您想要的不是插入新元素,而是覆盖现有元素。您可以通过索引访问来做到这一点:
my_array[index] = new_value
例如,它可以是这样的:
var index_of_null := my_array.find(null)
if index_of_null == -1:
# null was not found
print("the array is full") #or whatever
else:
my_array[index_of_null] = new_value
这里我们在my_array
中搜索null
,如果找到了(如果find
没有return-1
),我们替换null
和 new_value
。您应该能够根据您的需要调整该代码。
哦,我才发现我也在用
for i in my_array.size():
sorting func()
因此,它循环整个数组并找到空值并填充整个数组。我在想为什么 不起作用。现在想通了:)
我正在 Godot 中制作数组清单。我有六个 null
元素。我首先使用 int find(variant,int from 0)
找到第一个空索引。然后我使用 insert(position,variant)
来填充那个空索引。但是我发现它一直在它旁边找到 null
并最终将它们全部填满。因此,结果是一个完全填充的数组。我如何让它只填充第一个发现的一次?比如我选了一个项目后,一次填满一个槽位。
insert
方法,插入元素。因此 Array
将包含它拥有的所有元素,加上您插入的元素(Array
将再包含一个元素)。 这就是文档提到它在较大阵列上变慢的原因。
因此,insert
永远不会摆脱 Array
拥有的任何 null
(或任何其他元素)。这就是为什么你总是发现相同的东西。
您想要的不是插入新元素,而是覆盖现有元素。您可以通过索引访问来做到这一点:
my_array[index] = new_value
例如,它可以是这样的:
var index_of_null := my_array.find(null)
if index_of_null == -1:
# null was not found
print("the array is full") #or whatever
else:
my_array[index_of_null] = new_value
这里我们在my_array
中搜索null
,如果找到了(如果find
没有return-1
),我们替换null
和 new_value
。您应该能够根据您的需要调整该代码。
哦,我才发现我也在用
for i in my_array.size():
sorting func()
因此,它循环整个数组并找到空值并填充整个数组。我在想为什么