Luban+Unity使用,看这一篇文章就够了

视频教学:新手快速入门Luban+Unity使用_哔哩哔哩_bilibili

接入

dotnet:浏览要下载的所有 .NET 版本| .NET

Luban示例项目:https://github.com/focus-creative-games/luban_examples

Luban Next版 Releases版:https://github.com/focus-creative-games/luban/releases

Luban Unity包:https://github.com/focus-creative-games/luban_unity

视频中的项目地址:ZSG2001/LubanTest

Luban官方文档

在Unity项目根目录下,创建一个LubanConfig文件夹,来存放Luban相关的内容

把示例文件夹中的MiniTemplate文件夹复制一份到上一步创建的LubanConfig文件夹中

Luban示例项目:https://github.com/focus-creative-games/luban_examples

检查Datas和output两个文件夹中的内容

Datas中只留这三张表,output下的东西全部删除即可

将最新版的Luban(一个名称为Luban的文件夹)放到MiniTemplate文件夹下

Luban Next版 Releases版:https://github.com/focus-creative-games/luban/releases

在Unity的Packages文件夹下,创建一个文件夹来存放Luban Unity包的内容

Luban Unity包下载完成后,将里面除docs外的文件复制到前面创建的文件夹下

Luban Unity包:https://github.com/focus-creative-games/luban_unity

在Unity中,将unsafe打勾

配表

luban.config文件中指明了数据从哪里读取

此处代表从Datas文件夹下读取

我们在Datas文件夹下创建表即可

表的基本格式如下:

var代表字段名,Type代表字段类型,group是分组,有client,server和all(默认不填也是)

##代表注释

然后填入数据即可

在数据配表不复杂的情况下,直接使用自动导表

具体规则如下,简言之,就是在表名前加#,如果涉及文件夹嵌套,也是如此,luban会自动处理

生成数据

配好的数据

选择图中的文件,设置命令行

命令行详解

注意:

  1. 这里的文件定位都是基于gen.bat
  2. 除最后一行外,其余命令行要用^结尾,功能类似分隔符

图中的内容依次为:

工作区:主要是用于文件的定位,此处表示gen.bat的上两级文件夹

D:\Unity_Project\1.Teach\Test\LubanConfig\MiniTemplate\gen.bat,结果就是D:\Unity_Project\1.Teach\Test\

Luban DLL文件的位置:此处是在%WORKSPACE%\LubanConfig\MiniTemplate\Luban\Luban.dll

luban conf的位置:也就是下图这个文件,此处是与gen.bat同级,所以填一个点就行

d代表生成的数据目标

c代表生成的代码目标

conf 代表Config的位置

两个output分别表示数据和代码的输出路径

然后双击这个文件,自动执行生成

生成的内容

使用数据

此处将Json数据放在Resources文件夹下,

生成的代码为cs-newtonsoft-json或者cs-simple-json,并放在Scripts下

复制代码
set WORKSPACE=..\..
set LUBAN_DLL=%WORKSPACE%\LubanConfig\MiniTemplate\Luban\Luban.dll
set CONF_ROOT=.

dotnet %LUBAN_DLL% ^
    -t all ^
    -d json ^
    -c cs-newtonsoft-json ^//改为cs-simple-json即可
    --conf %CONF_ROOT%\luban.conf ^
    -x outputDataDir=%WORKSPACE%\Assets\Resources\Data ^
    -x outputCodeDir=%WORKSPACE%\Assets\Scripts\Code
pause

using cfg;
using Newtonsoft.Json.Linq;
using UnityEngine;

public class DataMgr : MonoBehaviour
{
    private void Start()
    {
        var tables = new Tables(LoadTable);
        foreach (var data in tables.TbPerson.DataList)
        {
            print(data);
        }
    }

    private JArray LoadTable(string table_name)
    {
        var textAsset = Resources.Load<TextAsset>("Data/tbperson");
        return JArray.Parse(textAsset.text);
    }
}

using cfg;
using SimpleJSON;
using UnityEngine;

public class DataMgr : MonoBehaviour
{
    private void Start()
    {
        //传入一个参数为string类型,返回值为xxx类型(由具体的代码类型决定)的方法
        var tables = new Tables(LoadTable);
        
        //数据类里面实现了字典和列表两个容器,可以自由使用
        
        //得到字典容器中指定键的数据
        print(tables.TbPerson.Get(1001));
        
        //得到列表容器中指定位置的数据
        print(tables.TbPerson.DataList[0]);
        
        //遍历字典或列表容器中的数据
        foreach (var data in tables.TbPerson.DataList)
        {
            print(data);
        }
    }

    private JSONNode LoadTable(string table_name)
    {
        //读取配置的数据
        var textAsset = Resources.Load<TextAsset>("Data/tbperson");
        //返回数据
        return JSONNode.Parse(textAsset.text);
    }
}

路径中点和斜杠的作用

1. 表示当前目录

  • 作用. 代表程序或命令当前所在的目录,常用于相对路径中省略完整路径的书写。
  • 示例
    • ./file.txt → 当前目录下的 file.txt 文件。

2. 表示上级目录(双点 ..****)

  • 作用.. 指向当前目录的直接父目录,用于向上导航。
  • 示例
    • ../config.ini → 父目录中的 config.ini 文件。
  • 示例
    • ./src/../config → 先进入 src,再返回上级,等效于 ./config
    • ../../lib → 向上返回两级后进入 lib 目录。

..\.. 此处表示gen.bat的上两级文件夹

D:\Unity_Project\1.Teach\Test\LubanConfig\MiniTemplate\gen.bat,结果就是D:\Unity_Project\1.Teach\Test\

相关推荐
winlife_13 小时前
让 AI 自动跑 PlayMode 回归测试:从 BUG 注入到自动判 FAIL 的完整闭环
人工智能·unity·bug·ai编程·mcp·回归测试·游戏测试
WarPigs1 天前
游戏签到系统
unity
小拉达不是臭老鼠1 天前
Unity中的UI系统之UGUI
学习·ui·unity
万兴丶1 天前
Coplay适用于 Unity 的“Al 代理”使用指南
unity·游戏引擎·ai编程
魔士于安1 天前
Unity材质球大合集
unity·游戏引擎·材质
mxwin2 天前
Unity Shader 冰面 Shader 制作原理与流程
unity·游戏引擎·shader
玖玥拾2 天前
Cocos学习笔记:关卡系统、音频管理与物理控制
游戏引擎·cocos2d
小拉达不是臭老鼠2 天前
Unity中的UI系统之UGUI_登陆面板实现
ui·unity
郝学胜-神的一滴2 天前
[简化版 GAMES 101] 计算机图形学 11:频域·卷积·抗锯齿
c++·unity·图形渲染·opengl·three·unreal
玖玥拾2 天前
Cocos学习笔记:滚动视图、关卡系统与本地存储
游戏引擎·cocos2d