相关链接
参照文档接入
- 安装
2.创建一个unity项目,然后进入Assets文件夹同级目录,新建一个文件夹Luban
3.回到luban文档,继续下一步:准备配置工程,直接将模板文件夹MiniTemplate复制到刚刚在unity中创建的Luban文件夹中
4.我暂时直接跳过了 创建Reward表 的过程,因为MiniTemplate有一个测试excel表,等需要配置自己的表的时候再去创建
5.下一步 项目准备 这一步,按照指示将需要的文件 Luban-Unity 从Package Manager中安装添加或者直接从git上下载再放到unity项目中就可以,然后开启unsafe选项
6.还需要将luban的批处理需要的文件下载下来,Luban Github,同时在之前Unity项目根目录下创建的Luban文件中再创建一个文件夹Tools,然后将下载下来的批处理文件解压后将整个文件夹放到Tools文件夹中
7. 准备生成脚本 发现MiniTemplate模板文件中有一个gen.bat文件(点击应该直接运行应该是正常的,运行该脚本,如果一切正常,会产生一系列日志,最终一行是 bye~),我们可以根据文档直接修改它,直接复制文档模板内容直接替换(自己也可以和模板文件对比下,参照文档的bat文件参数解读,应该能看出来都是什么意思)(其中,我保留了模板中 set WORKSPACE=.. 这个参数选项,注意:在这个上下文中,. 和 .. 是在文件系统中相对路径的常用表示)
. 表示当前目录。例如,如果你的当前工作目录是C:\Users\Username\Documents, 那么 . 就表示 C:\Users\Username\Documents\。.. 表示上一级目录。继续上面的例子,.. 就会是 C:\Users\Username\,其中 ..\.. 代表上上级目录
// 这是我的bat文件,其中 %WORKSPACE%\Assets\_Game\Luban\Gen 是我在unity中创建的指定目录文件夹,用来存放批处理动态生成的C#文件
// 我将原来输出数据文件的路径从模板指定的 output 改成了我自己的路径 %WORKSPACE%\Assets\_Game\Luban\OutputData
set WORKSPACE=..\..
set LUBAN_DLL=%WORKSPACE%\Luban\Tools\Luban\Luban.dll
set CONF_ROOT=.
dotnet %LUBAN_DLL% ^
-t client ^
-c cs-simple-json ^
-d json ^
--conf %CONF_ROOT%\luban.conf ^
-x outputCodeDir=%WORKSPACE%\Assets\_Game\Luban\Gen ^
-x outputDataDir=%WORKSPACE%\Assets\_Game\Luban\OutputData
pause
然后运行bat文件,应该可以发现需要的文件都已经生成,这时候就可以在unity中编辑代码获取数据了
8. 加载配置
void Start()
{
TempTest();
}
private void TempTest()
{
var tables = new cfg.Tables(LoadByteBuf);
var reward = tables.TbItem.Get(10000);
Debug.Log(reward.Name);
}
private static JSONNode LoadByteBuf(string file)
{
return JSON.Parse(File.ReadAllText(Application.dataPath + "/_Game/Luban/OutputData/" + file + ".json", System.Text.Encoding.UTF8));
}
不是很重要的部分(可选): Unity 中调用Luban批处理文件
[MenuItem("Execute Luban Batch File", false, 100)]
private static void ExecuteBatchFile()
{
string rootPath = System.IO.Path.GetDirectoryName(Application.dataPath);
if (!string.IsNullOrEmpty(rootPath))
{
// 构建批处理文件的完整路径
string batchFilePath = System.IO.Path.Combine(rootPath, "Luban/MiniTemplate/gen-json.bat");
// 设置进程启动信息
ProcessStartInfo startInfo = new ProcessStartInfo
{
FileName = batchFilePath,
UseShellExecute = true,
CreateNoWindow = false,
WorkingDirectory = System.IO.Path.Combine(rootPath, "Luban/MiniTemplate")
};
try
{
// 启动进程
var process = Process.Start(startInfo);
// if (process != null)
// {
// process.WaitForExit(); // 等待进程结束
// }
}
catch (System.Exception ex)
{
Debug.LogError($"执行批处理文件时发生错误: {ex.Message}");
}
}
else
{
Debug.LogError("无法获取项目根目录。");
}
}