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

相关推荐
笑虾1 天前
cocos2d-x lua 加载 Cocos Studio 导出的 csb
游戏引擎·lua·cocos2d
国科安芯4 天前
商业航天与航空安全场景下抗辐射 MCU 选型、应用实践及发展趋势
单片机·嵌入式硬件·无人机·cocos2d·risc-v
国科安芯4 天前
空间辐射环境下抗辐射 MCU 可靠性机理及航空安全应用研究综述
单片机·嵌入式硬件·macos·无人机·cocos2d·risc-v
国科安芯4 天前
航空安全关键系统抗辐射 MCU 加固技术、工程实现与典型应用
单片机·嵌入式硬件·无人机·cocos2d·risc-v
洛阳吕工13 天前
从 micro-ROS 到 px4_ros2:ROS2 无人机集成开发实战指南
游戏引擎·无人机·cocos2d
SmartRadio17 天前
NRF52833 + MPU6050 室内定位跟随无人机
游戏引擎·无人机·cocos2d
howlet220 天前
AI生成cocos-creator打砖块游戏-跑通第1关(CodeBuddy)
人工智能·游戏·cocos2d
The森1 个月前
cocos2d-x棋牌项目-模块2:GameView、Node 与 zOrder
游戏引擎·cocos2d
十五年专注C++开发1 个月前
Cocos2d - x: 一款开源跨平台 2D 游戏框架
运维·c++·游戏·开源·游戏引擎·cocos2d