unityは、列挙タイプjsonデータのシーケンス化と逆シーケンス化を含む


unity列挙タイプjsonデータのシーケンス化を含む
プログラミング環境win 10+unity 5.3f+VS2017
unityのjson機能は列挙タイプのデータをサポートしていません.ここで学んだばかりの変換方法を書きます.
列挙クラスの作成
public enum UIPanelType  {
    ItemMessage,
    Knapsack,
    MainMenu,
    Shop,
    Skill,
    System,
    Task
}


Stringを利用して列挙タイプを格納し,オブジェクトを生成するたびにStringを列挙タイプに変換することを主な考え方とする.
using UnityEngine;
using System.Collections;
using System;

[Serializable]
public class UIPanelInfo :ISerializationCallbackReceiver {
    [NonSerialized]
    public UIPanelType panelType;
    public string panelTypeString;
  
    public string path;

    //                 
    public void OnAfterDeserialize()//             
    {
        UIPanelType type = (UIPanelType)System.Enum.Parse(typeof(UIPanelType), panelTypeString);
        //     string         
        panelType = type;
    }

    public void OnBeforeSerialize()//             
    {
        
    }
}


jsonデータを取り出して辞書に保存します.
  private void ParseUIPanelTypeJson()
    {
        panelPathDict = new Dictionary();

        TextAsset ta = Resources.Load("UIPanelType");

        UIPanelTypeJson jsonObject = JsonUtility.FromJson(ta.text);

        foreach (UIPanelInfo info in jsonObject.infoList) 
        {
            //Debug.Log(info.panelType);
            panelPathDict.Add(info.panelType, info.path);
        }
    }