所以我在Squirrel中遇到了一个问题,我已经处理了一段时间。我想创建一个遍历数组中所有内容的东西,例如:
local array = [1, 2, 3, -1, 5, -1, 7, -1];
寻找那些-1的,我只想使用其中一个,第一个出现的(在这种情况下,它在3到5之间)。
在我的脚本中,当有人破坏某个对象时,它会将该对象的id设置为-1,而不是一个正则数字,因为否则它在尝试使用该对象时只会出错。真的不知道我是否在解释这件事。
另一个例子是,当玩家连接到某个游戏服务器时,我们连接了id为0、1、3和4的玩家,所以当下一个玩家连接时,他们得到的id为2。这就是我对数组的追求。
我试过几种方法,唯一最接近的是:
for(local i=1; i < Array.len(); i++){
if(Array[i].id != -1){
count++;
} else {
count = i;
}
}
但这个的问题是,它只接受最后一个ID并替换它,所以我们有对象0、1、2和3如果我想销毁3个并创建一个新的,没问题。如果我销毁0、1或2,然后创建一个新的插槽,它就不会占用那个插槽,而是选择数字4,这样就不起作用了。
谢谢你的阅读,希望任何人都能帮助我。
已解决:
这真的很简单,对于其他有同样问题的人来说,这就是我所做的。现在就跟上,这可能会变得非常棘手
我所做的是在else语句中添加了一个"break;",代码如下:
for(local i=1; i < Array.len(); i++){
if(Array[i].id != -1){
count++;
} else {
count = i;
break; // THIS
}
}
是的,我后来确实打了自己的头。。。
array.find(-1)
来自文件:
对数组中的值执行线性搜索。返回索引如果发现该值为null,则为。