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),我们替换nullnew_value。您应该能够根据您的需要调整该代码。

哦,我才发现我也在用

for i in my_array.size():
    sorting func()

因此,它循环整个数组并找到空值并填充整个数组。我在想为什么 不起作用。现在想通了:)