在游戏制作工作室中使用列表的问题

problem in using list in game maker studio

我是游戏制作新手。我创建了一个列表,我想将列表中的所有数据与特定值进行比较。我使用了以下代码:

for(var i=0;i<ds_list_size(lst);i++;)
{
    if ds_list_find_value(lst,i)>tmp
       ds_list_replace(lst,i,ds_list_find_value(lst,i)-1);
}

我遇到以下错误:

Push :: Execution Error - Variable Get -1.lst(100001, -1)
at gml_Object_object0_RightButtonPressed_1 (line 21) - for(var i=0;i

我的问题在哪里?

谢谢大家

我认为i++;末尾的;是不必要的,你只需要在for循环中使用;作为分隔符。

虽然 GML 为常见的 C# 规则提供了更多自由(比如 if 条件周围不需要括号),所以也许这是允许的。

另一种可能是索引超出范围 ds_list_replace()

如果你的第一个 for 循环 i = 0;当列表中的第一个条目小于 tmp 时,它会尝试用不存在的位置替换列表中的第一个位置。所以你可以用

检查它是否是列表的第一个条目
if ( i == 0 ) { }

或者您可以使用

从第二个条目开始 for 循环
for(var i=1;i<ds_list_size(lst);i++;)