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\

相关推荐
Martina_03213 小时前
AI生成3D场景导入 Unity/Unreal 后,NPC 总串层?用6步检查导航高度与跨层连接
人工智能·游戏·数学建模·3d·unity·自然语言处理·aigc
小贺儿开发6 小时前
Unity 局域网遥控幻灯片展示工具 3.0
科技·http·unity·工具·ppt·通信·网页
Martina_03211 天前
AI生成的过山车轨道导入后频繁脱轨?用5步检查样条、轨距与碰撞
图像处理·人工智能·游戏·3d·材质·游戏策划·关卡设计
Martina_03211 天前
AI生成的模块场景一烘焙就有黑边?用6步检查Lightmap UV、纹素密度与Padding
人工智能·游戏·3d·aigc·uv·游戏策划·关卡设计
Martina_03211 天前
AI生成的盔甲换动作后漂移?用6步检查挂点、骨架映射与 Bind Pose
人工智能·游戏·3d·ai·自然语言处理·aigc·游戏策划
Martina_03212 天前
同一片森林换个镜头就忽冷忽暖?用6步统一曝光、LUT与相机后处理
人工智能·游戏·数学建模·3d·自然语言处理·aigc·游戏策划
WarPigs2 天前
Unity对象不应该使用null传播的问题
unity
每日出拳老爷子3 天前
【VR】【Unity】抓走转放系列21|一天搭完门和抽屉工具槽:小场景按这个次序拼装
unity·vr·驱动·排错·snap zone
淡海水4 天前
02-02-原理篇-分代GC
算法·unity·c#·游戏引擎·.net·gc
小贺儿开发4 天前
Unity 文物新生 会讲故事的文物展墙
人工智能·科技·unity·ai·视频·互动·演示