无聊之中,自己做了一个插件,去实现在unity中将excel转化为json,xml,脚本的功能,这样比较方便管理。
项目链接
使用:
将项目文件拖到unity中
将所有的excel文件拖到ExcelFile中
选择转化文件格式
json文件会放在jsonFile中
xml文件会放在xmlFile中
c#文件会放在CsFile中
举例结果:
excel文件:
转为json
{"PlayerManager":[{"Id":1,
"Name":"张三",
"LeveID":1}
,
{"Id":2,
"Name":"李四",
"LeveID":36}
,
{"Id":3,
"Name":"王五",
"LeveID":12}
]}
转为xml
<PlayerManagerXml_Table>
<PlayerManager Id="1">
<Id>1</Id>
<Name>张三</Name>
<LeveID>1</LeveID>
</PlayerManager>
<PlayerManager Id="2">
<Id>2</Id>
<Name>李四</Name>
<LeveID>36</LeveID>
</PlayerManager>
<PlayerManager Id="3">
<Id>3</Id>
<Name>王五</Name>
<LeveID>12</LeveID>
</PlayerManager>
</PlayerManagerXml_Table>
转为c#
[System.Serializable()]
public class PlayerManager
{
public int Id;
public string Name;
public int LeveID;
}
同时添加一个脚本去解析json和xml
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LitJson;
using System.IO;
using System.Xml;
public class ReadeTable : MonoBehaviour
{
public class PlayerManagers {
public List<PlayerManager> PlayerManager = new List<PlayerManager>();
}
private string path;
public bool isReaderjson;
public bool isReaderxml;
// Start is called before the first frame update
void Start()
{
if (isReaderjson)
{
path = Application.dataPath + "/ExcelToFile/JsonFile/PlayerManager.json";
StreamReader streamreader = new StreamReader(path);//读取数据,转换成数据流
JsonReader js = new JsonReader(streamreader);//再转换成json数据
PlayerManagers r = JsonMapper.ToObject<PlayerManagers>(js);
for (int i = 0; i < r.PlayerManager.Count; i++)
{
Debug.Log("json-"+r.PlayerManager[i].Id + r.PlayerManager[i].Name + r.PlayerManager[i].LeveID);
}
}
if (isReaderxml)
{
path = Application.dataPath + "/ExcelToFile/XmlFile/PlayerManager.xml";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(path);
XmlNodeList node = xmlDoc.SelectSingleNode("PlayerManagerXml_Table").ChildNodes;
//遍历节点
foreach (XmlElement x1 in node)
{
Debug.Log("xml-" + x1.InnerText);
//if (x1.GetAttribute("Id") == "1")
// {
//foreach (XmlElement data1 in x1.ChildNodes)
// {
// Debug.Log("xml-"+data1.InnerText);
// }
//}
}
}
}
// Update is called once per frame
void Update()
{
}
}
结果
如果有报错,可以修改配置