Gamemaker - draw_sprite 在数据结构中没有发挥应有的价值

Gamemaker - draw_sprite not functioning as it should with value in data structure

我根据变量在 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

之前,它一直在正常工作

当我这样做时 returns 错误:

#

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

draw_sprite 参数 1 类型不正确 (5) 需要数字 (YYGI32) 在 gml_Object_obj_UIPlayer_DrawEvent_1(第 16 行)- draw_sprite (cuBuff, 1, x -148, y -233,)

#

我不能在那里使用这个 if 语句,因为它需要根据 cuBuff 变量绘制并且它可能不等于 "sprite8"

谢谢你。

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

尝试这样的事情:

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);
    }
}

你之前必须在全局范围内声明一个局部变量 i, 您不能在 if 或循环中声明变量

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,)