在另一个类中添加类

本文关键字:添加 另一个 | 更新日期: 2023-09-27 18:14:11

我有一个这样的类:

[System.Serializable]
public class arrayData
{
    public List<arrayData2> Levels;
}
public List<arrayData> Zones;
[System.Serializable]
public class arrayData2 { }

我应该添加一个项目到Levels集合:

void Start()
{
    Zones.Add(new arrayData());
    Zones[0].Levels.Add(new arrayData2());
}

方法在运行时一直给出这个错误:

NullReferenceException:对象引用未设置为对象

有人知道我错过了什么吗?

在另一个类中添加类

arrayData中,您需要Levels的实际实例,可以在构造函数中创建:

[System.Serializable]
public class arrayData
{
    public List<arrayData2> Levels;
    public arrayData() 
    {
        Levels = new List<arrayData2>();
    }
}

您必须在使用Zones之前创建一个新的实例:

var Zones = new List<arrayData>();
Zones.Add(new arrayData());
Zones[0].Levels.Add(new arrayData2());

在您的示例中,您缺少初始化Zones Levels集合。

您可以在包含它们的类或Start方法上执行此操作。

例如,在Start方法上:

void Start()
{
    var Zones = new List<arrayData>();
    Zones.Levels = new List<arrayData2>();
    Zones.Add(new arrayData());
    Zones[0].Levels.Add(new arrayData2());
}

或者在包含它们的类上:

[System.Serializable]
public class arrayData
{
    public List<arrayData2> Levels = new List<arrayData2>();
}
public List<arrayData> Zones = new List<arrayData>();
[System.Serializable]
public class arrayData2 { }

我认为Zones没有初始化。

你需要初始化关卡集合

public List<arrayData2> Levels;

你可以在ArrayData构造函数或者Start()方法