Game Maker - 在draw_text中使用全局变量和数组

时间:2016-05-19 23:41:12

标签: game-maker gml

在Game Maker中,使用draw_text绘制变量的值是这样的:

#Sector C - Processing block:
RefinedPDBCodeList = [] #C1
with open('RefinedPDBCodeList') as inputfile:
    for line in inputfile:
         RefinedPDBCodeList.append(line.strip().split(','))

print(RefinedPDBCodeList[0])
['101m.pdb']

import urllib.request      
for i in range(0, 1): #S2 - range(0, len(RefinedPDBCodeList)):
    path=urllib.request.urlretrieve('http://www.rcsb.org/pdb/explore/explore.do?structureId=101m', '101m.pdb')

提供正在使用的变量是全局的,现在有一个存储我们想要的所有变量名称的数组,会出现这个问题:

draw_text(xCoordinate, yCoordinate, string(global.variable))

它不是显示与第一个draw_text相同的值,而是显示:global.variableName而不是变量值。

这方面的一个例子是:

输入:

draw_text(xCoordinate, yCoordinate, string("global.") + string(arrayName[0]))

输出:

draw_text(10, 10, string("global.") + string(enemyName[0]));

相反,如果说它会健康,应该说:

希望输出:

global.Orc

有没有办法在没有痛苦的情况下做到这一点?我相信老游戏制作者可以使用这些功能:

10

但不幸的是,它们已不复存在。

2 个答案:

答案 0 :(得分:1)

您无法传递字符串以将其用作varibale,但您可以传递数字以将其用作数组的索引。例如,您可以使用多个变量,例如:

enemy_name = "Orc";
enemy_health = 100;
enemy_speed = 4;

将是:

enemy[0] = "Orc";
enemy[1] = 100;
enemy[2] = 4;

您也可以定义宏而不是数字,然后它可能看起来像:

enemy[ENEMY_NAME] = "Orc";
enemy[ENEMY_HEALTH] = 100;
enemy[ENEMY_SPEED] = 4;

其他方法是使用ds_map数据结构,其中key将用作变量名。

data = ds_map_create();
data[? "name"] = "Orc";
data[? "health"] = 100;
data[? "speed"] = 4;

答案 1 :(得分:0)

来自

  

draw_text(xCoordinate,yCoordinate,string(" global。")+ string(arrayName [0]))

  

draw_text(xCoordinate,yCoordinate,string(global.arrayName [0]))