配置Luban环境并创建Unity项目

Luban官方文档

  1. 安装dotnet sdk 8.0或更高版本sdk。(根据自己的系统下载对应的sdk。我的是windows所以我用的Windows x64版本)

  2. 下载luban_examples项目。(Gitee需要登陆才能下载,如果不想登录可以去Github下载。这里放上Luban的Github链接:https://github.com/focus-creative-games/luban_examples

image

下载完成后我们新建一个Unity项目,准备将Luban部署到Unity项目里。

创建好Unity项目后,打开Unity项目目录创建一个 LubanConfig ​ 。然后将我们下载的Luban插件里 Tools/Luban​ 和 MiniTemplate​ 文件夹放进去。

image

image

接下来我们打开刚刚放进 LubanConfig/MiniTemplate​ 文件夹。

Datas文件夹是我们创建Excel配置表的地方。

Output是我们点击gen.bat后生成Json、Xml文件的地方。

接下来我们修改一下生成Json、Xml文件的存放路径。

右键编辑 gen.bat​ 文件

我们打开gen.bat文件后长这样:

image

我们需要修改路径地址为我们Unity项目Assets文件夹下存放数据文件的路径,我的是:Game_Demo/../../assets/Project/DataTable

由于我们所在的文件夹是你的Unity项目名称/LubanConfig/MiniTemplate​ ,所以需要后退两次到项目文件夹。

image

简单介绍 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# 代码的输出目录
  • outputDataDir ​json 数据的输出目录

运行该脚本,如果一切正常,会产生一系列日志,最终一行是 bye~。

创建Excel配置文件生成Json、xml等文件

配置到Unity之后我们就可以进行Excel配表了。可以看Luban官方文档快速上手跟着创建reward.xlsx配置表。

不想来回切页面可以跟着我一起创建。

配置好之后我们进入 MiniTemplate/Datas​ 文件夹。

image

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

image

简略介绍一下文件格式:

  • 第1行是字段名行。单元格 A1 必须以##开头。表示这是一个有效数据表。
  • 第2行是字段类型行。第1个单元格必须为 ##type。
  • 第3行是分组行。c​表示字段属于客户端,s​表示属于属于服务器,c,s​表示同时属于所有,留空也表示属于所有。
  • 第4行是注释行。 以##开头。 可以有0-N个注释行,而且可以出现在任何位置
  • 第5行起是数据行。

luban并没有限制标题头行的位置和数量。像##xxx之类的行可以任意调整顺序和位置,而##group和##行也是可选的。

接下来我们可以直接删了这个 #demo.item.xlsx​ 文件,因为他一会儿会跟着生成Json文件。

在当前Datas页面创建一个 reward.xlsx​ 文件。具体内容如下

image

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

image

表字段说明:

字段 可空 默认值 说明
full_name 类型全名,即可以是不包含命名空间,如 Hello,也可以包含命名空间如 item.Item
flags false 等价schema逻辑结构中isFlags字段
unique false 当前enum内的所有枚举值必须唯一,等价schema逻辑结构中isUniqueItemId字段
comment
tags 填写方式为 key1=value1#key2=value2…
items 枚举项列表

配置好后我们可以点击 gen.bat​ 测试能否生成Json文件了

image

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

image

使用LitJson读取Json文件。

在我们的Assets文件夹里创建一个Scripts文件夹,创建一个 demo.cs​ 文件。用Visual Studio打开。

然后我们点击 工具 - > NuGet包管理器 - > 管理解决方案的NuGet包​ 在浏览里搜索LitJson,点击安装。我这已经安装好了。

image

接着在我们Unity项目根目录里找到Packages文件夹,打开可以看到我们下载的LitJson。

接下来我们打开LitJson文件夹,找到对应版本NET文件夹下的LitJSON.dll。把这个文件放在 ../../assets/Plugins​ 文件夹下即可

image

不同版本的Unity默认的Mono虚拟机版本不同,可能需要导入不同版本的程序库。选择主菜单的Edit→Project Settings,打开Project Settings,选择左侧Player(播放器,)然后再右侧的Other Settings中找到Scripting Runtime Version,可以看到当前脚本运行环境的版本

也可以用脚本来查看,可以在脚本中通过以下方式来查看:

string unityVersion = Application.unityVersion;
Debug.Log("当前Unity版本:" + unityVersion);

这样就能够在Unity编辑器的控制台中看到当前脚本运行环境的版本信息。

我的是.Net Standard 2.0,所以我就将 LitJson/lib/netstandard2.0/LitJSON.dll​ 文件放进去了。

image

导入后我们就可以写我们的读取代码了:

以下是 Demo.cs​ 代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using LitJson;

public class Demo : MonoBehaviour
{
public class Weapon
{
public int id;
public string name;
public string desc;
public int count;
}
string jsonStr;
void Start()
{
jsonStr = File.ReadAllText(Application.dataPath + "/Project/DataTable/demo_tbreward.json");
// Weapon[] arr = JsonMapper.ToObject<Weapon[]>(jsonStr);
List<Weapon> list = JsonMapper.ToObject<List<Weapon>>(jsonStr);

foreach (var item in list)
{
Debug.Log(item.name + " " + item.desc + " " + item.count);
}
}

}

注解:

  • Application: 是Stream.IO的一个类,用于操作和获取当前应用程序的信息。

  • Application.dataPath : 属性,返回应用程序的数据路径。(……/你的Unity项目名称/../../assets/)

  • JsonMapper: 是LitJson的一个工具类,存有静态方法。

  • JsonMapper.ToObject(json): 将一个json字符串解析成一个类对象

  • JsonMapper.ToJson: 将一个类对象转化成一个json字符串

敲完之后点击运行:

image

读取完成,希望这篇文章对你有所帮助。

参考文章:

深入了解Unity的Application类:一份详细的技术指南(二)

Unity 数据读取|(四)Json文件解析(Newtonsoft.Json ,Litjson,JsonUtility,SimpleJSON)

Luban数据配表方案

强力配置工具Luban使用教程

Unity——LitJSON的安装