我为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吗?
答案 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;
}