Unity Editor中的Inspector无法通过public Dictionary序列化(可视化编辑)Dictionary类型数据(原因应该是泛型的问题)
我们可以通过定义struct来模拟Dictionary数据,在初始化时转换成Dictionary的方法使其可视化(其实就是手动解决了泛型的问题)
点击此处光速解决 (/≧▽≦)/
public class GoodsController : MonoBehaviour
{
[System.Serializable]
public struct Goods
{
public int m_nID;
public int m_nCount;
}
public Goods[] m_listGoods;
private Dictionary<int, int> m_dicGoods; //物品<GoodsID, Count>
private void Start()
{
InitDictionary();
}
private void InitDictionary()
{
m_dicGoods = new Dictionary<int, int>();
for (int i = 0; i < m_listGoods.Length; ++i)
{
//注意:若m_listGoods出现相同的key转换后只会导入第一次出现的数据,
//重复key值视为bug并且没有保护,请小心使用!
if (!m_dicGoods.ContainsKey(m_listGoods[i].m_nID))
{
m_dicGoods.Add(m_listGoods[i].m_nID, m_listGoods[i].m_nCount);
}
}
}
}


好吧,Inspector面板上的本质是个数组
使用ISerializationCallbackReceiver 来序列化,和用PropertyDrawer来做可视化可能会更好吧