1

我一直在尝试在 Godot 中随机化有序数组(例如:[0,1,2,3])中的值。应该有一个数组的 shuffle() 方法,但它似乎被破坏并且总是返回“null”。我找到了一种使用 Fisher-Yates shuffle 的解决方法,但是生成的数组被引擎认为是“未排序的”,因此当我尝试使用 bsearch() 等方法通过它的位置查找值时,结果是充其量是不可靠的。

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

问题变得简单...

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

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

任何帮助将不胜感激。

Godot 不支持像 Python 那样合并数组的“zip”方法,所以我只能手动合并它们。然而......尽管我进行了数小时的搜索,但几乎没有关于如何在 GDScript 中执行此操作的文档。

4

1 回答 1

2

尝试这个:

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)

如果要将元素添加到字典中,可以像现有键一样为键分配值。

于 2019-04-04T11:48:26.913 回答