Arrays 在数组中查找空插槽并使用它
所以,我有一个问题,我已经在松鼠一段时间了。 我想创建一个数组中的所有东西,例如:Arrays 在数组中查找空插槽并使用它,arrays,slots,squirrel,Arrays,Slots,Squirrel,所以,我有一个问题,我已经在松鼠一段时间了。 我想创建一个数组中的所有东西,例如: local array = [1, 2, 3, -1, 5, -1, 7, -1]; 看看那些是-1的,我只想用其中的一个,第一个出现的(在这个例子中是3到5) 在我的脚本中,当有人销毁某个对象时,它会将该对象id设置为-1,而不是一个常规数字,因为否则它在尝试使用该对象时只会出错。我真的不知道我是否解释得很好 另一个例子是当玩家连接到某个游戏服务器时,我们会连接id为0、1、3和4的玩家,所以当下一个玩家连接
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;
}
}
for(本地i=1;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
}
}
for(本地i=1;i
是的,后来我确实打了自己的头
array.find(-1)
从:
对数组中的值执行线性搜索。返回索引
如果发现该值为null,则为
从:
对数组中的值执行线性搜索。返回索引
如果发现该值为null,则为
将你的解决方案作为答案接受它,将问题标记为已正确解决。将你的解决方案作为答案接受它,将问题标记为已正确解决。