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来做可视化可能会更好吧