Excel2Json是一款帮助游戏开发人员使用Excel表格来导出数据和数据结构的工具。
主要功能
- 支持读取 .xlsx格式的Excel表格;
- 支持Excel表格多Sheet结构;
- 直接预览Excel目录,双击可以直接打开Excel表格;
- 在线预览Json;
- 在线预览CSharp;
- 一键导出Json和CSharp;
Excel2Json_V1.0.1
- 支持了Excel表格多Sheet结构,并且可以生成对应结构的Json和CSharp数据结构;
- 支持了CSharp在线预览的高亮;
- 修复Excel被占用问题;
- 修复转成Json的时候Double类型带.0,导致int类型变成float类型的问题。
链接:https://pan.baidu.com/s/1D0bkTS5pIn3GEY29FadMDg
提取码:s54s
生成的CSharp数据结构脚本。
/// <summary>
/// 此部分代码由工具生成
/// 自行修改的内容小心被重新生成的代码覆盖
/// </summary>
using System.Collections;
using System.Collections.Generic;
public class ExampleData
{
public List<XMExampleData> listExampleDatas = new List<XMExampleData>();
public ExampleData(){}
public ExampleData(Dictionary<string, object> dic)
{
this.LoadFromDictionary(dic);
}
public void LoadFromDictionary(Dictionary<string, object> dic)
{
this.listExampleDatas.Clear();
List<object> exampleDatasObjectList = DictionaryUnity.GetSafeListValue(dic,"ExampleData") ;
if(exampleDatasObjectList!= null)
{
foreach (object obj in exampleDatasObjectList)
{
Dictionary<string, object> subDic = obj as Dictionary<string, object>;
XMExampleData exampleDataitem = new XMExampleData(subDic);
this.listExampleDatas.Add(exampleDataitem);
}
}
}
}
public class XMExampleData
{
public int iId;
public int iSid;
public string strName;
public string strSkill;
public float fSkillcd;
public bool bPlaybasketball;
public XMExampleData(){}
public XMExampleData(Dictionary<string, object> dic)
{
this.LoadFromDictionary(dic);
}
public void LoadFromDictionary(Dictionary<string, object> dic)
{
this.iId = DictionaryUnity.GetSafeIntValue(dic,"id");
this.iSid = DictionaryUnity.GetSafeIntValue(dic,"sid");
this.strName = DictionaryUnity.GetSafeStringValue(dic,"name");
this.strSkill = DictionaryUnity.GetSafeStringValue(dic,"skill");
this.fSkillcd = DictionaryUnity.GetSafeFloatValue(dic,"skillcd");
this.bPlaybasketball = DictionaryUnity.GetSafeBoolValue(dic,"playbasketball");
}
}
导表完成后,把导出的CSharp脚本和Json文件导入到Unity项目里面,再把工具路径下的两个解析脚本也导入到Unity项目里面。
下面是我写的一段测试代码,实例化后的数据可以保存到一个专门管理数据的类里面。
void Start()
{
TextAsset json = Resources.Load<TextAsset>("ExampleData");
if (json != null && !string.IsNullOrEmpty(json.text))
{
Dictionary<string, object> dic = Json.Deserialize(json.text) as Dictionary<string, object>;
ExampleData exampleData = new ExampleData(dic);
for (int i = 0; i < exampleData.listExampleDatas.Count; i++)
{
XMExampleData data = exampleData.listExampleDatas[i];
Debug.Log(data.iId);
Debug.Log(data.iSid);
Debug.Log(data.strName);
Debug.Log(data.strSkill);
Debug.Log(data.bPlaybasketball);
}
}
}
拓展
生成的数据结构也可以用于传输协议的数据结构,如果定义的协议内容是json,那么很容易集成进来,当时如果用.Net Core写的话,服务端也可以运行,所以将来有空的时候会考虑拓展数据传输协议这一块,不一定是json,可能是protobuf。