从multidimentional数组中删除Att / ReplaceWith

时间:2017-01-12 12:45:22

标签: c# unity3d multidimensional-array

所以这就是我希望做的事情:

Grid[elem.Column, elem.Row] = null;

但是这段代码不能像我想的那样工作。

我想从Grid [,]中删除该元素,然后使用null值替换它。不要将元素更改为null,因为该元素包含将来仍需要的信息。

以下是我的代码块,因为我相信我会被要求提供更多信息。

public class GridController : MonoBehaviour
{
    public Element Element;
    public Element[,] Grid;
    int _gridColumns = 40;
    int _gridRows = 40;

    void Start()
    {
        Grid = new Element[_gridRows, _gridColumns];

        for (int column = 0; column < _gridColumns; column++)
        {
            for (int row = 0; row < _gridRows; row++)
            {
               Grid[column, row] = Instantiate(Element) as Element;
            }
        }
    }

    public void ChangeCell(Element elem, int newRow)
    {
        Grid[elem.Column, elem.Row] = null;
    }
}

public class Element : MonoBehaviour
{
    public GridController gridController;
    public int Column;
    public int Row;

    void OnMouseOver()
    {
        gridController.ChangeCell(this, Row);
    }
}

请注意,有更多代码,但您应该了解我正在寻找的内容。

这基本上是我想要的:

Grid[elem.Column, elem.Row].ReplaceWith(null);

但不幸的是我在网上找不到任何类型的东西。

1 个答案:

答案 0 :(得分:0)

你可以这样做:

var obj = Grid[index1, index2]; // store reference in "obj"
Grid[index1, index2] = null; //replace object in Grid by "null"

所以,现在你在obj变量中有引用,你可以在代码中使用它(保存,进行一些计算或其他)