1

所以我有一个问题,我在 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 语句中,代码如下:

for(local i=1; i < Array.len(); i++){
    if(Array[i].id != -1){
        count++;
    } else {
        count = i;
        break; // THIS
    }
}

是的,后来我确实撞到了自己的头……

4

1 回答 1

1
array.find(-1)

文档中:

对数组中的值执行线性搜索。如果发现值为 null,则返回该值的索引。

于 2014-02-19T13:20:13.570 回答