如何在 Godot 中将 2 个等长数组合并到一个 key:value 对的字典中?

How to merge 2 arrays of equal length into a single dictionary with key:value pairs in Godot?

我一直在尝试随机化 Godot 中有序数组(例如:[0,1,2,3])中的值。应该有一个数组的 shuffle() 方法,但它似乎被破坏并且总是 returns "null"。我找到了一个使用 Fisher-Yates 洗牌的变通方法,但是生成的数组被引擎认为是 "unsorted",因此当我尝试使用 bsearch() 之类的方法按其位置查找值时,结果充其量是不可靠的。

我的解决方案是创建一个字典,它由一个包含我获得的随机值的数组组成,并与第二个长度相等的数组合并,其中包含(排序的)数字(按数字顺序),然​​后我可以将其用作键在需要时访问特定的数组位置。

问题变得简单...

在 GDScript 中,您将如何获取 2 个数组.. 例如:ARRAY1 = [0,1,2,3] ARRAY2 = [a,b,c,d]

..并将它们合并成一个字典,如下所示: MergedDictionary = {0:a, 1:b, 2:c, 3:d}

如有任何帮助,我们将不胜感激。

Godot 不支持 "zip" 合并数组的方法,例如 Python 支持,所以我不得不手动合并它们。然而......尽管我搜索了很多小时,但几乎没有关于如何在 GDScript 中执行此操作的文档。

试试这个:

var a = [1, 2, 3]
var b = ["a", "b", "c"]
var c = {} 

if a.size() == b.size():
    var i = 0
    for element in a:
        c[element] = b[i]
        i += 1
    print("Dictionary c: ", c)

如果要向字典中添加元素,可以像现有键一样为键赋值。