我想在GDSCript中的几个变量名的末尾追加一个整数。GDScript与Python共享一些语法,因此在我的问题中我已经标记了这两个语法。
我正在研究一个流氓,我决定组织主题tileset和NPC,并将它们按数字分组(即主题1可能是一个充满不死生物的地穴,主题2是一个充满动物的森林)。
这个想法是,在等级生成开始时,我可以随机选择一个数字,生成一个等级,并用相应的敌人填充它。
例如(假设随机数为1)

tileset_to_use = tileset_1
NPC_mid_boss = folder_1/mid_boss
NPC_end_boss = folder_1/end_boss

除了一系列嵌套的IF语句之外:
if RNG = 1:
    tileset_to_use = tileset_1
    NPC_mid_boss = folder_1/mid_boss
    NPC_end_boss = folder_1/end_boss
elif RNG = 2:
    tileset_to_use = tileset_2
    etc...

……有什么方法更有效?类似于tileset+RNG
我研究过使用字典,但是,除非我误解了它们,否则它们似乎用于访问值而不是生成变量名。

最佳答案

如果所有主题共享相同的结构,则可以执行类似于what Christopher Bennett proposes的操作。另一个选项可能会给你更多的灵活性,但可能会有更多的重复,这是这样的:

# Defined at class level
const THEMES = [
    # Theme 1
    {
        tileset = 'tileset_1',
        NPC_mid_boss = 'folder_1/mid_boss',
        NPC_end_boss = 'folder_1/end_boss',
        # ...
    },
    # Theme 2
    {
        tileset = 'tileset_2',
        NPC_mid_boss = 'folder_2/mid_boss',
        NPC_end_boss = 'folder_2/end_boss',
        # ...
    },
    # ...
]


func my_func():
    # Pick a random theme
    var theme = THEMES[randi() % THEMES.size()]
    tileset_to_use = theme.tileset
    # ...

这还允许您添加更多属性,如任意字符串(例如主题名称)或其他内容,如果需要,还可以将其外部化为JSON document之类的内容。但同样,它需要更多的手动设置。

关于python - 在GDScript中将数字附加到变量名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55935505/

10-14 17:45