unityは、列挙タイプjsonデータのシーケンス化と逆シーケンス化を含む
unity列挙タイプjsonデータのシーケンス化を含む
プログラミング環境win 10+unity 5.3f+VS2017
unityのjson機能は列挙タイプのデータをサポートしていません.ここで学んだばかりの変換方法を書きます.
列挙クラスの作成
Stringを利用して列挙タイプを格納し,オブジェクトを生成するたびにStringを列挙タイプに変換することを主な考え方とする.
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);
}
}