Gamemaker - draw_sprite在数据结构中的值不能正常运行

时间:2016-08-21 23:52:35

标签: gml

我根据变量在for循环中的位置绘制精灵的代码如下:

for (var i = 0; i <= ds_list_size(Player.buffs) i += 1) {
cuBuff = ds_list_find_value(Player.buffs, i)
if cuBuff == sprite8
draw_sprite (cuBuff, 1, x -148, y -233,)

它应该正常工作,直到我删除if cuBuff == sprite8

当我这样做时返回错误:

致命错误 行动编号1 抽奖活动 对象obj_UIPlayer:

draw_sprite参数1错误类型(5)期望数字(YYGI32)  at gml_Object_obj_UIPlayer_DrawEvent_1(第16行) - draw_sprite(cuBuff,1,x -148,y -233,)

我不能在那里使用if语句,因为它需要根据cuBuff变量进行绘制,它可能不等于&#34; sprite8&#34;

谢天谢地。

2 个答案:

答案 0 :(得分:0)

您应该已经发布了有关如何创建和填充列表的更多详细信息。但我认为Player.buffs包含精灵指数。你在for循环中忘记了一个分号,你应该使用少于comperator而不是小于或等于。作为额外的保护层,您还应该检查ds_list_find_value的返回值是否未定义。

尝试这样的事情:

for (i = 0; i < ds_list_size(Player.buffs); i++) {
    cuBuff = ds_list_find_value(Player.buffs, i);
    if (!is_undefined(cuBuff)) {
        draw_sprite(cuBuff, 0, x - 148, y - 233);
    }
}

答案 1 :(得分:0)

你必须在全局范围内声明一个本地var i, 你不能在if或a循环中声明一个变量

var i;
for (i = 0; i <= ds_list_size(Player.buffs) i += 1) {
cuBuff = ds_list_find_value(Player.buffs, i)
if cuBuff == sprite8
draw_sprite (cuBuff, 1, x -148, y -233,)