TexturePacker 自定义数据格式导出

TexturePacker 自定义数据格式导出

自定义输出模板

exporter.xml 定义输出参数

F:\exporters-jerry\cocos2d-jerry\exporter.xml

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<exporter version="1.0">
    <name>cocos2d-jerry</name>
    <displayName>cocos2d (Jerry Custom)</displayName>
    <description>支持自定义帧前缀的 Cocos2d-x 导出器。</description>
    <version>1.1</version>

    <files>
        <file>
            <name>main</name>
            <displayName>Data file</displayName>
            <fileExtension>plist</fileExtension>
            <description>Cocos2d-x plist file</description>
            <template>template.plist</template>
            <optional>false</optional>
        </file>
    </files>

    <supportsTrimming>true</supportsTrimming>
    <supportsRotation>true</supportsRotation>
    <rotationDirection>cw</rotationDirection>
    <supportsNPOT>true</supportsNPOT>
    <supportsTrimSpriteNames>true</supportsTrimSpriteNames>

    <defaults>
        <extrude>0</extrude>
        <shapePadding>2</shapePadding>
        <borderPadding>2</borderPadding>
        <trimMode>Trim</trimMode>
        <sizeConstraints>AnySize</sizeConstraints>
    </defaults>

	<properties>
        <property>
            <name>framePrefix</name>
            <displayName>Frame Prefix</displayName>
            <description>在此输入帧前缀</description>
            <type>string</type>
            <default>img_在此输入帧前缀</default>
            <isAdvanced>false</isAdvanced>
        </property>
    </properties>

</exporter>

template.plist 模板引擎

模板文件,用于生成最终的 plist
F:\exporters-jerry\cocos2d-jerry\template.plist

官方说参考 :https://docs.djangoproject.com/en/dev/ref/templates/language

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">{% load jerry_filter %}
    <dict>
        <key>frames</key>
        <dict>{% for sprite in sprites %}
            <key>{{ exporterProperties.framePrefix|pathNormalize }}{{ sprite.fullName }}</key>
            <dict>
                <key>frame</key>
                <string>{{ "{" }}{{ "{" }}{{sprite.frameRect.x}},{{sprite.frameRect.y}}{{ "}" }},{{ "{" }}{{sprite.frameRect.width}},{{sprite.frameRect.height}}{{ "}" }}{{ "}" }}</string>
                <key>offset</key>
                <string>{{ "{" }}{{sprite.cornerOffset.x}},{{sprite.cornerOffset.y}}{{ "}" }}</string>
                <key>rotated</key>
                {% if sprite.rotated %}<true/>{% else %}<false/>{% endif %}
                <key>sourceColorRect</key>
                <string>{{ "{" }}{{ "{" }}{{sprite.sourceRect.x}},{{sprite.sourceRect.y}}{{ "}" }},{{ "{" }}{{sprite.sourceRect.width}},{{sprite.sourceRect.height}}{{ "}" }}{{ "}" }}</string>
                <key>sourceSize</key>
                <string>{{ "{" }}{{sprite.untrimmedSize.width}},{{sprite.untrimmedSize.height}}{{ "}" }}</string>
            </dict>{% endfor %}
        </dict>
        <key>metadata</key>
        <dict>
            <key>format</key>
            <integer>2</integer>
            <key>realTextureFileName</key>
            <string>{{ texture.fullName }}</string>
            <key>size</key>
            <string>{{texture.size.width}},{{texture.size.height}}</string>
            <key>smartupdate</key>
            <string>{{ smartUpdateKey }}</string>
            <key>textureFileName</key>
            <string>{{ texture.fullName }}</string>
        </dict>
    </dict>
</plist>

jerry_filter.qs

过滤器 F:\exporters-jerry\cocos2d-jerry\grantlee\0.2\jerry_filter.qs

js 复制代码
// 定义筛选函数
var PathNormalize = function(input) {
    // 将输入转换为常规 JavaScript 字符串
    var input = input.rawString();

    // 过滤器必须返回字符串值
    return input.replace(/\\/g, '/');
};

// 设置过滤器名称(在模板中这样使用:{{ sprite.trimmedName|pathNormalize }})
PathNormalize.filterName = "pathNormalize";

// 向模板系统注册过滤器
Library.addFilter("PathNormalize");

TexturePacker 设置

自定义数据模板做好后到这里设置

启动时选择一个(目前我只做了一个 cocos2d-jerry 在 F:\exporters-jerry 目录下可以创建多个自定义数据格式,每个对应一个子目录)

自定义属性

自定义帧前缀

输出效果

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>frames</key>
        <dict>
            <key>res/custom/activity/huo_dong_da_ting/xin_qu_huo_dong/1.png</key>
            <dict>
                <key>frame</key>
                <string>{{2,2},{320,135}}</string>
                <key>offset</key>
                <string>{0,0}</string>
                <key>rotated</key>
                <false/>
                <key>sourceColorRect</key>
                <string>{{0,0},{320,135}}</string>
                <key>sourceSize</key>
                <string>{320,135}</string>
            </dict>
            略。。。
        </dict>
        略。。。
</plist>

参考资料

Texture Settings
cocos2d-plist-file-format
custom-exporter

相关推荐
流浪法师解剖鱼9 小时前
CocosCreator制作推箱子游戏
python·cocos2d
玖玥拾18 小时前
Cocos学习笔记:瓦片地图与坐标转换
游戏引擎·cocos2d
玖玥拾1 天前
Cocos学习笔记:粒子系统与对象层批量处理
游戏引擎·cocos2d
隔窗听雨眠1 天前
Unity与Simulink联合仿真:实现无人机目标追踪系统
unity·无人机·cocos2d·simulink
可别3901 天前
Cesium 实战功能指南:三维网格剖分 + 无人机飞行仿真(开源可落地)
开源·无人机·cocos2d
可别3901 天前
cesium实现网格化
游戏引擎·cocos2d
wgc2k3 天前
Oops Framework-5-GUI资源的图集打包方式
游戏·cocos2d
wgc2k3 天前
Oops Framework-8-由空项目创建第一个登录界面
游戏·cocos2d
wgc2k3 天前
Oops Framework-7-由空项目创建Oops Framework项目
游戏·cocos2d
wgc2k4 天前
Oops Framework-6-项目中如何使用AI的思路
人工智能·游戏·cocos2d