我如何检查,以便是否有任何元素与 foreach 会设置它而不是稍后转到其他元素

本文关键字:元素 设置 foreach 其他 检查 何检查 任何 是否 | 更新日期: 2023-09-27 18:33:34

我如何检查是否有任何元素与 foreach 是否会设置它而不是稍后转到其他元素?

for (int i = 0; i < 3; i++)
{
    Grass grass = new Grass(32 + 32 * i, 32 * 12);
    GrassList.Add(grass);
}
foreach (Grass grass in GrassList)
{
    if (grass.Rect.X - 32 <= Rect.X && grass.Rect.X + 32 >= Rect.X && grass.Rect.Y - 65 <= Rect.Y)
    {
        FallSpeed = 0;
        isTouchingGround = true;
    }
    else
    {
        FallSpeed = 3;
        isTouchingGround = false;
    }
}

我如何检查,以便是否有任何元素与 foreach 会设置它而不是稍后转到其他元素

您也可以将

LINQ 表达式与 if 条件一起使用来实现所需的内容

  FallSpeed = 3;
  isTouchingGround = false;
  if(GrassList.Any(
      grass => grass.Rect.X - 32 <= Rect.X &&
               grass.Rect.X + 32 >= Rect.X && 
               grass.Rect.Y - 65 <= Rect.Y))
  {
     FallSpeed = 0;
     isTouchingGround = true;
  }

最好的选择是缩短您的评估。一旦你知道你正在接触地面,break出圈。您的else分支基本上是默认情况。

FallSpeed = 3;
isTouchingGround = false;
foreach (Grass grass in GrassList)
{
    if (grass.Rect.X - 32 <= Rect.X && grass.Rect.X + 32 >= Rect.X && grass.Rect.Y - 65 <= Rect.Y)
    {
        FallSpeed = 0;
        isTouchingGround = true;
        break;
    }
}
相关文章: