Bootstrap

unity强力配置插件Luban【Next最新版本】(一)部署


前言

Luban 是一个强大、易用、优雅、稳定的游戏配置解决方案。它的设计目标是满足从小型到超大型游戏项目,从简单到复杂的游戏配置工作流需求。在2023年下半年,Luban 项目进行了重构,旧版本命名为 Classic 版,新版本为 Next 版。如果追求稳定性,建议使用 Classic 版,可以参考我博客中的 Luban 相关文章, 在经历了一年的发展之后,也就是现在的2024年,由于旧版不再更新,我将开始在项目中接入新版,会将博客进行翻新和增加新内容(旧版依旧稳定且相关博客不会删除)。
Next版的意义是为了简化之前繁重的流程,将各种功能模块化、定制化,比以前更加轻量具有针对性,话不多说,走。
官方文档


一、准备

  1. 安装dotnet sdk 8.0或更高版本sdk
  2. 下载luban_examples项目
  3. 准备一个unity项目
  4. 确立目标:实现示例的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】

;