我正在制作一个库存系统,但我被困在应该通过简单的拖放操作将项目从一个单元格移动到另一个单元格的部分。
有一个Item[,] Inventory
包含项目的数组,object fromCell, toCell
它应该包含对单元格的引用,以便在释放鼠标按钮时进行操作,但是当我尝试这样做时:
object temp = toCell;
toCell = fromCell;
fromCell = temp;
...游戏只是交换对象引用,而不是实际对象。我该如何进行这项工作?
UPD:感谢 Bartosz,我明白了这一点。事实证明,您可以安全地使用对对象数组的引用,并使用您希望交换的对象的已保存索引来更改它。
代码可以是这样的:
object fromArray, toArray;
int fromX, fromY, toX, toY;
// this is where game things happen
void SwapMethod()
{
object temp = ((object[,])toArray)[toX, toY];
((object[,])toArray)[toX, toY] = ((object[,])fromArray)[fromX, fromY];
((object[,])fromArray)[fromX, fromY] = temp;
}