Unity - 在检查器中显示自编写的数组

时间:2017-06-21 09:08:28

标签: c# arrays unity3d

我为Unity编写了自己的对象。它可以保存有关要生成的gameObject的信息以及它的计数。我将它用于数组,因此数组可以有2个值。

public class ChestValue // my own object for "Arrays with 2 values"
{
    public ChestValue(GameObject prefab, int count) // fill the data
    {
        ItemToSpawn = prefab;
        SpawnCount = count;
    }

    public GameObject ItemToSpawn { get; private set; }
    public int SpawnCount { get; private set; }
}

所以写作

[SerializeField]
ChestValue[] information;

不起作用,对象不会出现在检查器中。

我知道,ChestValue是一个对象。但有没有办法实现它呢?

喜欢编写自己的Array / Tuple吗?

1 个答案:

答案 0 :(得分:2)

是的,只需将[System.Serializable]装饰添加到班级的顶部:https://docs.unity3d.com/ScriptReference/Serializable.html

然而,你可能需要在你的类中添加一个默认构造函数,以便它可以工作,你需要使用普通变量切换属性ItemToSpawn和SpawnCount,这样检查员就可以看到并序列化它们(你也可以考虑一下这个特性)但它需要在编辑器代码中摆弄更多东西。)

[System.Serializable] // tells unity that this class is serializable and therefore it can show up in the inspector
public class ChestValue 
{
     // Pretty sure you need a default constructor as the class is serializable
    public ChestValue(){}
    public ChestValue(GameObject prefab, int count) // fill the data
    {
        ItemToSpawn = prefab;
        SpawnCount = count;
    }

    // switched properties to variables so the editor can 'see' them
    public GameObject ItemToSpawn;
    public int SpawnCount;
}