新手快速入门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会自动处理
生成数据
配好的数据
选择图中的文件,设置命令行
命令行详解
注意:
- 这里的文件定位都是基于gen.bat
- 除最后一行外,其余命令行要用^结尾,功能类似分隔符
图中的内容依次为:
工作区:主要是用于文件的定位,此处表示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\