Unity使用Luban+LitJson插件实现Excel转Json,Xml等并进行读取。
配置Luban环境并创建Unity项目
安装dotnet sdk 8.0或更高版本sdk。(根据自己的系统下载对应的sdk。我的是windows所以我用的Windows x64版本)
下载luban_examples项目。(Gitee需要登陆才能下载,如果不想登录可以去Github下载。这里放上Luban的Github链接:https://github.com/focus-creative-games/luban_examples)

下载完成后我们新建一个Unity项目,准备将Luban部署到Unity项目里。
创建好Unity项目后,打开Unity项目目录创建一个 LubanConfig 。然后将我们下载的Luban插件里 Tools/Luban 和 MiniTemplate 文件夹放进去。


接下来我们打开刚刚放进 LubanConfig/MiniTemplate 文件夹。
Datas文件夹是我们创建Excel配置表的地方。
Output是我们点击gen.bat后生成Json、Xml文件的地方。
接下来我们修改一下生成Json、Xml文件的存放路径。
右键编辑 gen.bat 文件
我们打开gen.bat文件后长这样:

我们需要修改路径地址为我们Unity项目Assets文件夹下存放数据文件的路径,我的是:Game_Demo/../../assets/Project/DataTable
由于我们所在的文件夹是你的Unity项目名称/LubanConfig/MiniTemplate ,所以需要后退两次到项目文件夹。

简单介绍 bat 文件中各项参数:
-
LUBAN_DLL Luban.dll 文件的路径。指向 luban_examples/Tools/Luban/Luban.dll -
CONF_ROOT配置项目的路径。指向 luban_examples/DesignerConfigs -
-t生成目标。可以为 client、server、all 之类的值 -
-c 生成的代码类型。 cs-simple-json 为生成使用 SimpleJSON 加载 json 数据的 c# 代码 -
-d 生成的数据类型。 如果我们想生成其他类型,将后面的json改为需要类型即可,比如xml。 -
inputDataDir配置表(如 xlsx )的根目录 -
outputCodeDir c# 代码的输出目录 -
outputDataDirjson 数据的输出目录
运行该脚本,如果一切正常,会产生一系列日志,最终一行是 bye~。
创建Excel配置文件生成Json、xml等文件
配置到Unity之后我们就可以进行Excel配表了。可以看Luban官方文档快速上手跟着创建reward.xlsx配置表。
不想来回切页面可以跟着我一起创建。
配置好之后我们进入 MiniTemplate/Datas 文件夹。

#demo.item.xlsx 文件是Luban的一个示例文件,打开长这样。

简略介绍一下文件格式:
- 第1行是字段名行。单元格 A1 必须以##开头。表示这是一个有效数据表。
- 第2行是字段类型行。第1个单元格必须为 ##type。
- 第3行是分组行。
c表示字段属于客户端,s表示属于属于服务器,c,s表示同时属于所有,留空也表示属于所有。 - 第4行是注释行。 以##开头。 可以有0-N个注释行,而且可以出现在任何位置
- 第5行起是数据行。
luban并没有限制标题头行的位置和数量。像##xxx之类的行可以任意调整顺序和位置,而##group和##行也是可选的。
接下来我们可以直接删了这个 #demo.item.xlsx 文件,因为他一会儿会跟着生成Json文件。
在当前Datas页面创建一个 reward.xlsx 文件。具体内容如下

创建好我们的 reward.xlsx 配置表后,我们需要在主表中加入我们创建好的 reward.xlsx 参数和路径。

表字段说明:
| 字段 | 可空 | 默认值 | 说明 |
|---|---|---|---|
| full_name | 否 | 类型全名,即可以是不包含命名空间,如 Hello,也可以包含命名空间如 item.Item | |
| flags | 是 | false | 等价schema逻辑结构中isFlags字段 |
| unique | 是 | false | 当前enum内的所有枚举值必须唯一,等价schema逻辑结构中isUniqueItemId字段 |
| comment | 是 | ||
| tags | 是 | 填写方式为 key1=value1#key2=value2… | |
| items | 否 | 枚举项列表 |
配置好后我们可以点击 gen.bat 测试能否生成Json文件了

打开unity看一看,没有问题。

使用LitJson读取Json文件。
在我们的Assets文件夹里创建一个Scripts文件夹,创建一个 demo.cs 文件。用Visual Studio打开。
然后我们点击 工具 - > NuGet包管理器 - > 管理解决方案的NuGet包 在浏览里搜索LitJson,点击安装。我这已经安装好了。

接着在我们Unity项目根目录里找到Packages文件夹,打开可以看到我们下载的LitJson。
接下来我们打开LitJson文件夹,找到对应版本NET文件夹下的LitJSON.dll。把这个文件放在 ../../assets/Plugins 文件夹下即可

不同版本的Unity默认的Mono虚拟机版本不同,可能需要导入不同版本的程序库。选择主菜单的Edit→Project Settings,打开Project Settings,选择左侧Player(播放器,)然后再右侧的Other Settings中找到Scripting Runtime Version,可以看到当前脚本运行环境的版本
也可以用脚本来查看,可以在脚本中通过以下方式来查看:
string unityVersion = Application.unityVersion; |
这样就能够在Unity编辑器的控制台中看到当前脚本运行环境的版本信息。
我的是.Net Standard 2.0,所以我就将 LitJson/lib/netstandard2.0/LitJSON.dll 文件放进去了。

导入后我们就可以写我们的读取代码了:
以下是 Demo.cs 代码
using System.Collections; |
注解:
Application: 是Stream.IO的一个类,用于操作和获取当前应用程序的信息。
Application.dataPath : 属性,返回应用程序的数据路径。(……/你的Unity项目名称/../../assets/)
JsonMapper: 是LitJson的一个工具类,存有静态方法。
JsonMapper.ToObject(json): 将一个json字符串解析成一个类对象
JsonMapper.ToJson: 将一个类对象转化成一个json字符串
敲完之后点击运行:

读取完成,希望这篇文章对你有所帮助。
参考文章:
深入了解Unity的Application类:一份详细的技术指南(二)
Unity 数据读取|(四)Json文件解析(Newtonsoft.Json ,Litjson,JsonUtility,SimpleJSON)