Luban入门学习笔记

Luban是目前比较火的导表工具,功能强大、易用、易拓展。笔者近期在自学使用Luban,用于Unity游戏项目。学习期间发现它的入门文档虽然详尽,但仍有不足和歧义,对于我这种不常开荒的菜鸟来说学起来还是有些小磕绊的。所以我结合官方文档整理了这篇学习笔记,希望能提供一点帮助,建议结合官方文档和示例项目阅读。欢迎交流批评指正。

一、下载Luban及配置环境

1.安装dotnet sdk 7.0或更高版本sdk。(其实就是.Net 7.0,换个马甲差点没认出来…)
2.下载示例项目。
3.下载Luban工具。

以上步骤参照文档即可,无需赘述。其中3.要求确保最终Luban程序在指定位置,实际上这是示例配置文件的路径,只要在批处理文件和相关配置文件中正确设置相关路径,放在哪里都可以。
之后的步骤会用到此处解压出的Luban.dll。

二、准备配置工程

官方文档中建议直接复制MiniTemplate,但是入门阶段这样容易搞不清各文件的功能,也容易和官方范例中的类似文件混淆。所以这里我不整个复制,而是参照文档根据自己的需求去一个个复制需要的文件,或者自己创建。

MiniTemplate中包含三个文件夹,搞清楚用途后,都是可以改名改路径的,只要在相关配置文件和批处理文件中正确设置路径即可。
三个文件夹功能如下:
Datas文件夹 包含具体业务配置文件和__beans__.xlsx、enums.xlsx、tables.xlsx
其中__beans__定义了bean数据格式,__enums__定义了枚举数据格式,__tables__定义了其他表格应以何种方式导入,我理解为“配置表的配置表”。

这三个配置文件可以和具体业务配置文件放在不同的文件夹,只要相关批处理文件和配置文件设置正确即可。后面的luban.conf配置文件中的schemaFiles会包含此三项的路径。

Defines文件夹中包含vector的配置,还有其他什么配置需要放在这里需要深入研究。
output文件夹中包含的是导表出的数据,比如json文件。

gen.bat是执行导表的批处理文件。
luban.conf包含各项配置文件的配置文件的路径等。
luban.conf

三、创建Reward表(创建测试用表格)

这里我创建的是比Reward更简单但也很常用的Language表。
测试用多语言表
表格格式参照官方文档即可。需要注意的是如上图4、5行所示,如果某行的第A列是“##”,那么这行会被视为注释。只有第4行的注释会作为之后生成出的代码的注释。第5行不会体现在生成出的文件中。同时,这种整行的注释要从第B列开始写,保证第A列只有“##”,否则生成时会视为表头格式异常有警告提示。

生成出的代码文件和注释
表格创建好后需要在之前提到的__tables__.xlsx添加表声明。需要注意的是“全名”和“记录类名不能相同。(我知道这是一句废话,但我一开始图省事真的犯了这个错误…)

五、项目准备

参照官方文档即可

六、准备生成脚本

此处建议不使用已有的gen.bat文件,最好根据自己设置项目文件夹路径的习惯自己写一个。官方文档没提到的参数–conf为前面提到过的luban.conf文件的路径。inputDataDir是配置文件(xlsx文件)所在的文件夹路径。-t的参数含义在luban.conf文件中可以修改,但通常没必要动。应该还有些高级参数暂时用不到。

luban.conf文件默认和MiniTemplate的gen.bat在同一路径下,可以复制出来进行修改。我首次测试时因为没有用到枚举和bean,就把文件中的__beans__.xlsx、enums.xlsx这两项删除了。

七、加载配置和使用配置

此处相比于官方文档,我认为更好的方式是直接去对应的示例工程中Copy代码。比如我是要用于Unity项目,对应的示例工程是\Projects\Csharp_Unity_json这个文件夹下的工程,就直接去复制这里的加载配置的代码就可以了。

总结

以上就是我近期学习使用Luban的笔记,之后在实际使用过程中如有新的心得会在此更新补充。欢迎讨论指正。

Luban(鲁班)——Android图片压缩工具,仿微信朋友圈压缩策略。项目描述目前做app开发总绕不开图片这个元素。但是随着手机拍照分辨率的提升,图片的压缩成为一个很重要的问题。单纯对图片进行裁切,压缩已经有很多文章介绍。但是裁切成多少,压缩成多少却很难控制好,裁切过头图片太小,质量压缩过头则显示效果太差。于是自然想到app巨头“微信”会是怎么处理,Luban(鲁班)就是通过在微信朋友圈发送近100张不同分辨率图片,对比原图与微信压缩后的图片逆向推算出来的压缩算法。因为有其他语言也想要实现 Luban,所以描述了一遍算法步骤 因为是逆向推算,效果还没法跟微信一模一样,但是已经很接近微信朋友圈压缩后的效果,具体看以下对比!效果与对比内容原图LubanWechat截屏 720P720*1280,390k720*1280,87k720*1280,56k截屏 1080P1080*1920,2.21M1080*1920,104k1080*1920,112k拍照 13M(4:3)3096*4128,3.12M1548*2064,141k1548*2064,147k拍照 9.6M(16:9)4128*2322,4.64M1032*581,97k1032*581,74k滚动截屏1080*6433,1.56M1080*6433,351k1080*6433,482k入compile 'io.reactivex:rxandroid:1.2.1' compile 'io.reactivex:rxjava:1.1.6' compile 'top.zibin:Luban:1.0.5'使用Listener方式Luban内部采用io线程进行图片压缩,外部调用只需设置好结果监听即可Luban.get(this)     .load(File)                     //传人要压缩的图片     .putGear(Luban.THIRD_GEAR)      //设定压缩档次,默认三挡     .setCompressListener(new OnCompressListener() { //设置回调         @Override         public void onStart() {             //TODO 压缩开始前调用,可以在方法内启动 loading UI         }         @Override         public void onSuccess(File file) {             //TODO 压缩成功后调用,返回压缩后的图片文件         }         @Override         public void onError(Throwable e) {             //TODO 当压缩过去出现问题时调用         }     }).launch();    //启动压缩RxJava方式RxJava 调用方式请自行随意控制线程Luban.get(this)         .load(file)         .putGear(Luban.THIRD_GEAR)         .asObservable()         .subscribeOn(Schedulers.io())         .observeOn(AndroidSchedulers.mainThread())         .doOnError(new Action1() {             @Override             public void call(Throwable throwable) {                 throwable.printStackTrace();             }         })         .onErrorResumeNext(new Func1>() {             @Override             public Observable<? extends File> call(Throwable throwable) {                 return Observable.empty();             }         })         .subscribe(new Action1() {             @Override             public void call(File file) {                 //TODO 压缩成功后调用,返回压缩后的图片文件             }         }); 标签:Luban(鲁班)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值