我根据变量在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;
谢天谢地。
答案 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,)