【HTML5】Egret笔记(四):纹理集

egret-texture一、纹理集批处理

Egret官方的TextureMerger -1.5.2版本后支持简单命令行调用

命令格式:-p [目录] […] -o [json输出路径] -e [文件筛选正则表达式]

Windows环境:

支持批处理,分享下笔者自己的bat文件。

@echo off

::源文件目录,存放散图
set origin_path=E:\origin

::目标文件目录,打包后的整图
set dest_path=E:\dest\

::打包工具路径
set texture_merger=D:\Program" "Files\Egret\TextureMerger\TextureMerger.exe

echo ..........Start...........

for /R %origin_path% %%s in (.) do (
	echo %%~ns
	start /wait %texture_merger% -p %%s -o %dest_path%%%~ns_sheet.json
) 

echo ...........Done...........

pause

说明:读者只需将origin_path、dest_path、texture_merger(见注释)替换为自己的本地目录,保存为ui.bat,双击执行即可。

Mac环境:

安装工具后,需要自行给其起个别名:

$ echo “alias TextureMerger=’/Applications/TextureMerger.app/Contents/MacOS/TextureMerger'” >> ~/.bash_profile;

然后即可终端通过命令打包,Mac下不支持批处理,只能一个个打包。


   二、纹理集基本调用机制

一个完整的纹理集配置:

{
  "url": "assets/ui/number_sheet.json", 
  "type": "sheet", 
  "name": "number_sheet_json", 
  "subkeys": "numberB1,numberB0"
}

其中‘subkeys’键并不是必需的。

egret在解析资源配置config.json时,遇到[type=‘sheet’]的资源时,会自动检测是否包含[subkeys],如果有,则将其二级键名加入一级键名集合[keyMap]中,即[RES.configInstance.keyMap]

egret-texture-keymap

如果sheet类型资源不包含[subkeys],在使用之前需要自行手动加载,通过SheetAnalyzer解析器来获取。

尤其是使用eui模块的项目,最好包含[subkeys],系统会自己异步加载资源。

官方的工具,合图和导入res.json,都默认有[subkeys]。自己用批处理生成res.json时,一定得注意此环节。