Unity-构造函数返回Null的问题

时间:2018-10-27 00:44:31

标签: c# unity3d constructor

我指的是图块,它们是Unity中具有特征的精灵。

上下文:我正在尝试将Tile(在Class Tile中使用构造函数生成)添加到列表中。 Tile变量基本上由该类型的Tile的Health,Sprite,ID等组成。 Tile对象中的所有这些变量都不为Null,并且在其中具有某种值。我的问题是,当我在运行时监视变量时,它们通常只是null。我唯一想知道为什么会发生这种情况的原因是,在Tile对象中称为base的变量也是Null,但是我不知道如何解决此问题。

这是一个名为Tile的类

seconds

这是一个名为TileAssign的类,我在其中创建所有图块及其属性,然后将它们添加到“类图块的列表”中

    public int ID { get; set; }
public string Name { get; set; }
public Sprite Image { get; set; }
public int Durability { get; set; }
public bool Destructible { get; set; }
public static List<Tile> Tilelist; //Where I plan on storing all the tiles for later use


public Tile()
{
    List<Tile> TileList = new List<Tile>();
}

public Tile(int id, string name, int durability, bool destructible, Sprite image)
    : this()
{

    ID = id;
    Name = name;
    Image = image;
    Durability = durability;
    Destructible = destructible;
}

Look At bottom Left, the TilesInitialized Array and the individual Tile objects inside are their along with their characteristics and such, although a little explanation of what exactly the "base" part of it is would help and why it's null

1 个答案:

答案 0 :(得分:3)

您要在此处初始化一个临时变量:

public Tile()
{
    List<Tile> TileList = new List<Tile>();
}

应该是:

public Tile()
{
    TileList = new List<Tile>();
}

TileList真的是static吗?如果是这样,请不要在构造函数中对其进行初始化。每次创建新的TileList时,您都会擦除Tile

只需将其声明为:

public static List<Tile> TileList = new List<Tile>();

public Tile()
{
}