Godot 库存数组,如何填充第一个元素

发布于 2025-01-10 01:31:35 字数 246 浏览 0 评论 0 原文

我正在 Godot 中制作数组清单。我有六个 null 元素。我首先使用 int find(variant,int from 0) 来查找第一个空索引。然后我使用 insert(position,variant) 填充该空索引。但我发现它不断寻找旁边的 null 并最终将它们全部填满。因此,结果是一个完全填充的数组。如何让它填充第一个仅找到一次的内容?例如,在我选择一件物品后,一次会填满一个插槽。

I am making an array inventory in Godot. I have six null elements. I first use int find(variant,int from 0) to find the first null index. And then I use insert(position,variant) to fill in that null index. But I found that it keeps finding the null next to it and ends up filling them all. So, the result is a completely filled array. How do I make it fill the first found only once? Such as after I pick one item, one slot gets fill at a time.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

古镇旧梦 2025-01-17 01:31:35

插入< /a> 方法,插入元素。因此,Array 将拥有它拥有的所有元素,加上您插入的元素(Array 将多一个元素)。 这就是为什么文档提到它在较大的数组上会变慢。

因此,insert永远不会摆脱任何null(或任何其他元素)Array 拥有。这就是为什么你不断发现相同的东西。

您想要的不是插入新元素,而是覆盖现有元素。您可以通过索引访问来做到这一点:

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没有'返回-1),我们将 null 替换为 new_value。您应该能够根据您的需要调整该代码。

The insert method, inserts the element. So the Array will have all the elements it had, plus the one you inserted (The Array will have one more element). This is why the documentation mentions that it becomes slow on larger arrays.

As a result, insert never gets rid of any null (or any other element) the Array had. Which is why you keep finding the same.

What you want is not to insert a new element, but to overwrite an existing one. You do that with index access:

my_array[index] = new_value

For example, it can be something like this:

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

Here we search for null in my_array, and if we find it (if find didn't return -1), we replace that null with a new_value. You should be able to adapt that code to your needs.

溺渁∝ 2025-01-17 01:31:35

哦,我刚刚意识到我也在使用

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

所以,它循环整个数组并找到 null 并填充整个数组。我在想为什么 theraot 的代码不起作用。现在想通了:)

Oh, I just realized I was also using

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

So, it loops the whole array and finds null and fills the whole array. I was thinking why theraot's code didn't work. Now figured out:)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文