您的位置:首页 > 移动开发 > Unity3D

OnBeforeSerialize And OnAfterDeserialize

2016-06-12 15:31 344 查看
using UnityEngine;
using System.Collections.Generic;

public class test : MonoBehaviour, ISerializationCallbackReceiver
{

public List<int> _keys;
public List<string> _values;

//Unity doesn't know how to serialize a Dictionary
public Dictionary<int, string> _myDictionary = new Dictionary<int, string>
{
{3, "I"},
{4, "Love"},
{5, "Unity"}
};

// 一改_keys,_values就调用
public void OnAfterDeserialize()
{
Debug.Log(" ** OnAfterDeserialize **");
_myDictionary.Clear();
for (int i = 0; i != System.Math.Min(_keys.Count, _values.Count); i++)
_myDictionary.Add(_keys[i], _values[i]);
}

// 每帧调用
public void OnBeforeSerialize()
{
//Debug.Log(" ** OnBeforeSerialize **");
//_keys.Clear();
//_values.Clear();
//foreach (var kvp in _myDictionary)
//{
//    _keys.Add(kvp.Key);
//    _values.Add(kvp.Value);
//}
}

void OnGUI()
{
foreach (var kvp in _myDictionary)
GUILayout.Label("Key: " + kvp.Key + " value: " + kvp.Value);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity3d