0

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

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 :: 执行错误 - 变量 Get -1.lst(100001, -1)
at gml_Object_object0_RightButtonPressed_1(第 21 行) - for(var i=0;i

我的问题在哪里?

谢谢大家。

4

2 回答 2

0

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

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

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

于 2020-03-27T07:37:11.303 回答
0

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

if ( i == 0 ) { }

或者您可以从第二个条目开始 for 循环

for(var i=1;i<ds_list_size(lst);i++;)
于 2020-03-29T06:56:47.670 回答