前言
Luban 是一个强大、易用、优雅、稳定的游戏配置解决方案。它的设计目标是满足从小型到超大型游戏项目,从简单到复杂的游戏配置工作流需求。在2023年下半年,Luban 项目进行了重构,旧版本命名为 Classic 版,新版本为 Next 版。如果追求稳定性,建议使用 Classic 版,可以参考我博客中的 Luban 相关文章, 在经历了一年的发展之后,也就是现在的2024年,由于旧版不再更新,我将开始在项目中接入新版,会将博客进行翻新和增加新内容(旧版依旧稳定且相关博客不会删除)。
Next版的意义是为了简化之前繁重的流程,将各种功能模块化、定制化,比以前更加轻量具有针对性,话不多说,走。
官方文档
一、准备
- 安装dotnet sdk 8.0或更高版本sdk
- 下载luban_examples项目。
- 准备一个unity项目
- 确立目标:实现示例的c#代码生成,生成位置为StreamingAssets下,在unity运行时加载数据并打印信息
二、快速配置
1、Luban配置
在目标工程新建Luban文件夹
将下载示例中的MiniTemplate和Tools文件夹拷贝进Luban文件夹
我们打开MiniTemplate文件夹找到gen.bat文件(至于下面的sh是macOS系统使用的脚本),如下图所示:
运行,生成json成功
小小测试一下,修改MiniTemplate\Datas\item.xlsx,我们加一个国庆节礼包保存文档,修改如下:
再次运行gen.bat,查找MiniTemplate\output\item_tbitem.json结果如下:
我们发现策划的狗头赫然陈列其中,那么意味着luban这边的配置大功告成。(想要修改路径、文件夹名称请编辑bat进行修改,文章后半段有说明,相信也难不倒大家)
2、unity配置
在进入https://github.com/focus-creative-games/luban_unity将工程下载下来,解压到文件夹并将文件夹改名成com.code-philosophy.luban。看到这个文件夹名称类型,相比大家已经清楚她是干什么的了,没错,就是unity包。
将luban_examples-main\Projects\Csharp_Unity_json\Assets\LubanLib文件夹拷贝到目标项目的Asset文件夹下。
luban同时也会出现在Package Manager当中
然后在Unity的PlayerSettings里开启unsafe选项。
打开gen.bat,修改data生成的路径并添加代码生成的路径进去。(output文件夹不需要的话也可以删除了)
set WORKSPACE=..
set LUBAN_DLL=%WORKSPACE%\Tools\Luban\Luban.dll
set CONF_ROOT=.
dotnet %LUBAN_DLL% ^
-t all ^
-c cs-simple-json^
-d json ^
--conf %CONF_ROOT%\luban.conf ^
-x outputCodeDir=..\..\Assets\Scripts\Luban^
-x outputDataDir=..\..\Assets\StreamingAssets/Luban
pause
简单讲解下,set 就是用来设置变量的, . 代表当前目录, 两个点就是上一级目录。
-c cs-simple-json^ 这里就是生成代码的方式。
-x outputCodeDir=…\Assets\Scripts\Luban^ 这里的路径会自动创建,所以不必担心路径不存在的问题
3、unity内加载
进入unity工程,在场景中添加如下Main脚本,运行。
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using SimpleJSON;
using cfg;
public class Main : MonoBehaviour
{
void Start()
{
string gameConfDir = Application.streamingAssetsPath+"/Luban"; // 替换为gen.bat中outputDataDir指向的目录
var tables = new cfg.Tables(file => JSON.Parse(File.ReadAllText($"{gameConfDir}/{file}.json")));
//检查
Item item = tables.TbItem.DataList[10];
Debug.Log(item);
}
}
加载陈昆
二、优化整理
- 目录Luban\DesignerConfigs\Datas下无用文件删除,只留__beans__.xlsx、enums.xlsx、tables.xlsx三个(表格里也一并清空)。
- 目录Luban\MiniTemplate\Defines.xml里面是适配unity的现有的枚举和结构,比如vector、double3、矩阵这样的类型,建议保留;官方适配了常用的几种,至于矩阵之类的需要自己添加。
- 添加ExternalTypeUtil脚本,方便转换Vector等unity属性。
public static class ExternalTypeUtil
{
public static UnityEngine.Vector2 NewVector2(cfg.vector2 v)
{
return new UnityEngine.Vector2(v.X, v.Y);
}
public static UnityEngine.Vector3 NewVector3(cfg.vector3 v)
{
return new UnityEngine.Vector3(v.X, v.Y, v.Z);
}
public static UnityEngine.Vector4 NewVector4(cfg.vector4 v)
{
return new UnityEngine.Vector4(v.X, v.Y, v.Z, v.W);
}
}
- 将目录Luban\MiniTemplate中的gen.sh移除(不需要mac的话),将gen.bat移动到Luban目录下并修改bat文件如下:
set WORKSPACE=.
set LUBAN_DLL=%WORKSPACE%\Tools\Luban\Luban.dll
set CONF_ROOT=%WORKSPACE%\MiniTemplate
dotnet %LUBAN_DLL% ^
-t all ^
-c cs-simple-json^
-d json ^
--conf %CONF_ROOT%\luban.conf ^
-x outputCodeDir=..\Assets\Scripts\Luban^
-x outputDataDir=..\Assets\StreamingAssets/Luban
pause
至此,Luban Next版部署完成。(Jenkins上直接调用bat脚本即可)
总结
如果您正在寻找一种快速上手新版 Luban 的方法,那么这篇文章正是您所需要的。我提供了一个完整的资源包,包括所需的软件、原始工程文件,以及为 Unity 定制的示例项目,确保您能够无缝地开始使用。
为了应对可能的版本更新,我们已经将所有相关资源放置在网盘,方便您随时访问和使用。您可以选择通过点赞👍来下载这些资源,以便快速开始您的项目。
链接:【Luan_Next】。