如何在循环中检查bool是否为false

时间:2015-04-02 13:28:58

标签: c# class loops for-loop unity3d

我正在尝试遍历一个类数组。该类有两个变量:变换和bool。

我想在另一个脚本中循环查看当前位置是否被占用,如果是,则bool占用将被设置为true。

我该怎么做呢?

 public Positions[] PosInObect = new Positions[1];

 [System.Serializable]
 public class Positions
 {
     public Transform pos;
     public bool isFilled;
 }

 for (int i = 0; i < TheObject.GetComponent<GetInObject>().PosInObect.Length; i++) 
 {

 }

2 个答案:

答案 0 :(得分:9)

好吧,您只需访问相关索引处的元素,然后检查字段值:

 if (TheObject.GetComponent<GetInObject>().PosInObect[i].isFilled)

但是,如果您不需要索引,我建议您使用foreach循环:

foreach (var position in TheObject.GetComponent<GetInObject>().PosInObect)
{
    if (position.isFilled)
    {
        ...
    }
}

如果你需要这个位置,我先用一个局部变量来获取数组:

var positions = TheObject.GetComponent<GetInObject>().PosInObect;
for (int i = 0; i < positions.Length; i++)
{
    if (positions[i].isFilled)
    {
        ...
    }
}

我还建议使用属性而不是公共字段,并遵循.NET命名约定。

答案 1 :(得分:0)

这可以在foreach循环中完成。您仍然可以从该类实例访问变量。

foreach(Positions pos in TheObject.GetComponent<GetInObject>().PosInObect)
{
    if(pos.isFilled)
    {
       //Do something
    }
}