xlsx编译器说明

表格第一行为中文注释

表格第二行为属性key(key为空的列 会被忽略)

表格工作簿(sheet)名包含.uobj .iobj .aobj .upobj 可以编译到对应的 单位物编 物品物编 技能物编 科技物编

物编 对应的编译后缀
单位 .uobj
物品 .iobj
技能 .aobj
科技 .upobj
魔法效果 .bobj
地形装饰物 .dobj
可破坏物 .deobj

表格工作簿(sheet)名包含.ts 可以编译到对应的ts

表格工作簿(sheet)名可填写${fileName} 以达到编译时使用xlsx表格文件的文件名

xlsx表格文件名以.ts.xlsx结尾的 会在保存地图时自动将内部sheet名包含.ts的编译为ts(编译物编请右键菜单手动执行)

编译规则会将ts文件编译到xlsx文件相同目录 并以sheet名(移除所有点后面的后缀)命名ts(中文sheet名会自动转为拼音文件名)

编译处理顺序:

  1. 执行xlsx表格里的公式
  2. 执行第一行的预处理宏
  3. 单元格内的EL表达式(支持Freemaker语法,数据模型为当前单元格所在的行的kv集合)

注意事项

xlsx里的空白单元格有2种情况 一种是null一种是空字符("")

在物编中的使用效果(比如设置名字的时候): 前者会使用父对象的数据 后者就是没有数据

null可以用#设置或者wps里右键点击单元格 清空此单元格

""空字符可以用#0或输入空格设置

""空字符就是当你双击了此单元格进入了编辑状态那么此单元格的值现在就是""(空字符)

所以不要在Excel里随便双击单元格 如果不小心双击了空白单元格 请手动修正值是否是想要的效果(是想要null还是""空字符")

第一行注释中可写预处理宏与代码

比如#as Tip

会将该列值复制到key值为Tip。 如在Name名字列可#as Tip设置到提示中

比如#def 混乱 chaos

会将该列内的所有混乱替换为chaos 方便策划写中文文档 作者用实际地图值

比如#default 默认值

会将该列内的所有null与空字符的单元格 设置为默认值

#ifset 近战 {weapTp1:"instant",_parent:"Hpal"}

会将该列值为近战的行 设置额外属性weapTp1为instant _parent(父id)设置为Hpal
比如表格里攻击类型为近战的怪物 可通过此设置武器类型为立即

<%ts代码%>内的代码会编译到ts文件方法里

key 为 #<%xxx%>#的列将会编译到ts代码

第一列的单元格以//开头的字符串将标记此行作为注释行

单元格里的值替换

比如:${attack} 在编译后会将${attack}替换为该行key值为attack的值

${}里面可嵌套函数 如:${R2P(critical_probability)} critical_probability列假如为"0.02"则会被替换为"2%"

推荐方式

需要编译的xlsx统一放到/src/目录下

需要编译为物编的表格第一列为id

百分比几率的以小数表达。比如200%为2 50%为0.5

推荐id分配规则

单位从x001开始排列

英雄从X001开始排列

物品从y001开始排列

技能从Y001开始排列

其他可从 x*01开始排列(比如魔法效果从xb01排列 科技从xu01开始排列)

JsonPath语法

可使用{}表示子对象 []表示列表。 支持从左到右的树列表结构。

每个sheet为一个对象数组 每个对象里最多嵌套一个数组。可以嵌套多个子对象 子对象里又可重复嵌套下去

当一个数组key开始时(即包含[的key)会将当列前面的单元格是否为空当做是否是子列表数据的判断依据(具体演示请查看太阳基础文档仓库)

原理:太阳编译器会将key值当做json连接起来(自动补全冒号逗号括号等).然后根据此key的json结构来当做当前表格的对象结构

xlsx表格支持的自定义函数

toPinYin

可以将中文转为拼音

设置中文图片名称与中文物遍名对应时可使用此 以避免中文名在部分环境不兼容的情况

将获得:

ye_ke_qu_qi_ta_lie_de_zhi.jpg