为什么我的数组中的元素仍然为空?

时间:2014-09-10 10:20:11

标签: c# arrays unity3d

这一切都在使用Monodevelop的Unity中

我像这样声明我的数组

Tile[] Tiles = new Tile[7];

然后我尝试循环并设置元素(尽管这本身就是尝试解决这个问题),就像这样

for (int i = 0; i < Tiles.Length; i++) 
{
    Tiles[i] = new Tile();
}

然而,该集合仍然填充了7个空对象。我一定很遗憾。我原以为初始代码就足够了。

整个例子:

using UnityEngine;
using System.Collections;

public class Foo : MonoBehaviour
{
    Tile[] Tiles = new Tile[7];

    // Use this for initialization
    void Start ( ) 
    {
        for (int i = 0; i < Tiles.Length; i++) 
        {
            Tiles[i] = new Tile();
        }
    }
}

这是Tile类

using UnityEngine;
using System.Collections;

public class Tile
{
    public Tile[] nonAdjacentTiles = new Tile[6];
    public Transform _mesh;
}

3 个答案:

答案 0 :(得分:0)

由于某些原因,在Tile类中需要构造函数,我不确定为什么,但是使用Unity和Monodevelop似乎不支持默认构造函数。

答案 1 :(得分:0)

Siryakalot如你所说,你需要Tile类中的构造函数,因为你不能像这样实现类型Tyle的对象:

Tiles[i] = new Tile();

在Tile类中没有构造函数Tile()

祝你好运:)

答案 2 :(得分:-1)

不,类数组的默认值为null。 所以你需要循环并在之后填充数组。

我喜欢这里发布的解决方案,用于清理数组。 https://stackoverflow.com/a/4839502/4018288