我有一个网格并获得移动方向。这个方向可以是
Vector2Int movementDirection = new Vector2Int(/* this can be
(0,1) // up
(0,-1) // down
(-1,0) // left
(1,0) // right
*/);
Vector2Int是Unity Framework的一个类! https://docs.unity3d.com/ScriptReference/Vector2Int.html
当从下到上移动时,我想检查targetCell周围的所有单元格。但我不想检查底部细胞,因为这个细胞是我来自的地方。
当我从左向右移动时,我不想检查左侧单元格。
所以我去了这个
private void CheckCells(Vector2Int movementDirection)
{
Vector2Int[] cellDirections = { Vector2Int.up, Vector2Int.down, Vector2Int.left, Vector2Int.right };
cellDirections.Where(direction => !direction.Equals(movementDirection)).ToArray();
for (int i = 0; i < cellDirections.Length; i++)
{
// check the other 3 cells
}
}
此数组的长度仍为 4 。我似乎无法将Vector2Int.up
与(0,1)
我试过
!direction.Equals(movementDirection)
和
directon != movementDirection
如何为4个方向中的3个开始循环?给定的参数应该从数组中删除第四个方向。
也许我不需要阵列?
答案 0 :(得分:3)
这一行:
cellDirections.Where(direction => !direction.Equals(movementDirection)).ToArray();
对您的cellDirections
变量不执行任何操作,因为您没有分配结果。
尝试:
cellDirections = cellDirections
.Where(direction => !direction.Equals(movementDirection)).ToArray();
或任何其他任务:
var anyVar = cellDirections
.Where(direction => !direction.Equals(movementDirection)).ToArray();
请注意,您也可以循环浏览cellDirections
并在if
内添加for
:
foreach (var direction in cellDirections)
{
if(!direction.Equals(movementDirection))
{
// check the cells
}
}