写在前面
Cocos Studio 是 cocos2d-x 一个比较好用的编辑器,我们常用它来搭建场景 UI,导出场景文件和资源,然后在代码中直接加载场景文件。一般导出场景文件的时候会连同资源一起导出,场景文件保存了资源的读取方式,游戏启动时会根据这个读取方式正确找到资源并加载。将小图片打包成一张大图片,导出合图和 plist 文件,然后在程序中加载 plist 文件是一种比较常见和可行的方法。Cocos Studio 提供了打包合图的功能,能满足基本的需求。这两天使整个项目的图片打包和资源管理工作变得脚本化,自动化,还想对图片资源进行加密,Cocos Studio 已经满足不了需求了。使用 TexturePacker 能很好地解决问题,首先 TexturePacker 有脚本工具,可以使用脚本来自动打包图片;其次 TexturePacker 在打包图片的时候可以进行加密。但是,使用 Cocos Studio 和 TexturePacker 协同工作,有些坑我们不得不注意。
解密 csd
Cocos Studio 中的场景和层源文件都是 csd 格式,导出的文件是 csb 格式,csb 是二进制文件,它是 csd 文件编译后的结果,可以实现加密。我们重点关注的是 csd 文件的格式,使用文本编辑工具打开一个 csd 文件
<GameFile>
<PropertyGroup Name="GameScene" Type="Scene" ID="8c1fcf53-2f4f-46bf-a636-8fc966e42aef" Version="3.10.0.0" />
<Content ctype="GameProjectContent">
<Content>
<Animation Duration="0" Speed="1.0000" />
<ObjectData Name="Scene" Tag="23" ctype="GameNodeObjectData">
<Size X="800.0000" Y="600.0000" />
<Children>
<AbstractNodeData Name="user_text" ActionTag="593766283" Tag="15" IconVisible="False" LeftMargin="363.5000" RightMargin="363.5000" TopMargin="533.5000" BottomMargin="37.5000" FontSize="24" LabelText="的房子" ShadowOffsetX="2.0000" ShadowOffsetY="-2.0000" ctype="TextObjectData">
<Size X="73.0000" Y="29.0000" />
<AnchorPoint ScaleX="0.5000" ScaleY="0.5000" />
<Position X="400.0000" Y="52.0000" />
<Scale ScaleX="1.0000" ScaleY="1.0000" />
<CColor A="255" R="255"