【发布时间】:2023-03-18 01:10:01
【问题描述】:
我有一个网格,我想在其中获取我用鼠标拖动的区域中的所有单元格,即 mouseDown 和 mouseUp 之间的所有单元格。
我尽了最大努力,但无法想出一个适用于正值和负值的解决方案。
假设我有这个网格,红点是鼠标事件:
我开始编写一个函数来获取该区域中的所有单元格,但在考虑负数(向下和向左拖动)和正数(向上和向右拖动)时,我似乎无法弄清楚如何做到这一点) 值。
public static Vector2Int[,] GetAreaBetweenPositions(Vector2Int mouseDown, Vector2Int mouseUp)
{
int diffX = mouseUp.x - mouseDown.x;
int diffY = mouseUp.y - mouseDown.y;
Vector2Int[,] area = new Vector2Int[diffX, diffY];
for (int x = mouseDown.x; x < diffX; x++)
{
for (int y = mouseDown.y; y < diffY; y++)
{
area[x, y] = new Vector2Int(mouseDown.x + x, mouseDown.y + y);
}
}
return area;
}
【问题讨论】:
-
你没有说你正在使用什么平台,但是,“大多数”网格都有一个“选定的”单元格集合。从而消除所有发布的代码。
-
@JohnG 不太清楚你的意思。我对这个数学问题的解决方案感兴趣,平台应该无关紧要吗?可能是我误会了