在 GDScript 中将数字附加到变量名称
Append a number to a variable name in GDScript
我想在 GDSCript 中的几个变量名的末尾附加一个整数。
我正在制作 roguelike,我决定组织主题图块和 NPC,并按编号将它们分组到文件夹中(即,主题 1 可能是一个充满不死生物的地穴,主题 2 是一个充满动物的森林).
这个想法是,在关卡生成开始时,我可以随机 select 一个数字,生成一个关卡并用相应的敌人填充它。
例如(假设随机数为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的东西
我研究过使用字典,但除非我误解了它们,否则它们似乎用于访问值而不是生成变量名。
抱歉,我想我在发表第一条评论时误解了你的问题。这样的东西行得通吗?
var RNG = randi()%1-(total number of tilesets);
var tileset_to_use = (str("tileset_",RNG));
NPC_mid_boss = (str("folder_",RNG,"/mid_boss"));
如果您的所有主题共享完全相同的结构,您可以执行类似于 的操作。另一个可能会给你更多灵活性的选择是这样的:
# 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 之类的内容。但同样,它需要更多的手动设置。
我想在 GDSCript 中的几个变量名的末尾附加一个整数。
我正在制作 roguelike,我决定组织主题图块和 NPC,并按编号将它们分组到文件夹中(即,主题 1 可能是一个充满不死生物的地穴,主题 2 是一个充满动物的森林). 这个想法是,在关卡生成开始时,我可以随机 select 一个数字,生成一个关卡并用相应的敌人填充它。
例如(假设随机数为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的东西 我研究过使用字典,但除非我误解了它们,否则它们似乎用于访问值而不是生成变量名。
抱歉,我想我在发表第一条评论时误解了你的问题。这样的东西行得通吗?
var RNG = randi()%1-(total number of tilesets);
var tileset_to_use = (str("tileset_",RNG));
NPC_mid_boss = (str("folder_",RNG,"/mid_boss"));
如果您的所有主题共享完全相同的结构,您可以执行类似于
# 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 之类的内容。但同样,它需要更多的手动设置。