我想打开具有plist和ExportJson文件的游戏的png文件中的纹理,但我无法做到这一点

问题描述 投票:0回答:1

我想在手机上检查我喜欢的游戏的纹理。据我了解,游戏纹理是用cocos2d制作的。 我之前反转过其他2D游戏的纹理,但我做不到,请帮忙。

<?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>npc_alisa_arrange_black_01.png</key>
            <dict>
                <key>frame</key>
                <string>{{82,60},{22,32}}</string>
                <key>offset</key>
                <string>{-1,16}</string>
                <key>rotated</key>
                <false/>
                <key>sourceColorRect</key>
                <string>{{28,8},{22,32}}</string>
                <key>sourceSize</key>
                <string>{80,80}</string>
            </dict>
            <key>npc_alisa_arrange_black_02.png</key>
            <dict>
                <key>frame</key>
                <string>{{74,188},{22,30}}</string>
                <key>offset</key>
                <string>{-1,15}</string>
                <key>rotated</key>
                <false/>
                <key>sourceColorRect</key>
                <string>{{28,10},{22,30}}</string>
                <key>sourceSize</key>
                <string>{80,80}</string>
            </dict>
            <key>npc_alisa_cooking_black_01.png</key>
            <dict>
                <key>frame</key>
                <string>{{34,84},{22,36}}</string>
                <key>offset</key>
                <string>{-1,17}</string>
                <key>rotated</key>
                <false/>
                <key>sourceColorRect</key>
                <string>{{28,5},{22,36}}</string>
                <key>sourceSize</key>
                <string>{80,80}</string>
            </dict>
            <key>npc_alisa_cooking_black_02.png</key>
            <dict>
                <key>frame</key>
                <string>{{66,2},{22,38}}</string>
                <key>offset</key>
                <string>{-1,18}</string>
                <key>rotated</key>
                <false/>
                <key>sourceColorRect</key>
                <string>{{28,3},{22,38}}</string>
                <key>sourceSize</key>
                <string>{80,80}</string>
            </dict>
            <key>npc_alisa_cooking_black_03.png</key>
            <dict>
                <key>frame</key>
                <string>{{2,126},{22,36}}</string>
                <key>offset</key>
                <string>{-1,17}</string>
                <key>rotated</key>
                <false/>
                <key>sourceColorRect</key>
                <string>{{28,5},{22,36}}</string>
                <key>sourceSize</key>
                <string>{80,80}</string>
            </dict>

我尝试使用经典的纹理解包器,但没有成功。通常它们很容易打开,但我总是遇到错误。

png plist
1个回答
0
投票

如果你对 PNG 文件进行十六进制转储,它看起来像这样:

xxd npc_alisa.png | more

00000000: 0050 4e47 0d0a 1a0a 5000 000d 4948 4452  .PNG....P...IHDR
00000010: 0000 0100 0000 00f4 0803 0000 0043 d808  .............C..
00000020: ef00 0000 0467 414d 4100 00b1 8f0b fc61  .....gAMA......a
PNG 文件的

“文件魔法”(又名签名)是:

89 50 4e 47 0d 0a 1a 0a
因此第一个字节已损坏。您可以使用十六进制编辑器对其进行编辑,或者如果您像我一样是个恐龙,请使用 

xxd

 将其转储为纯 ASCII,然后使用 
sed
 将第一个字节从 
00
 更改为 
89
 并然后从纯 ASCII 重新组装二进制 PNG:

看起来像这样:

xxd -p npc_alisa.png | sed -e '1s/00/89/' > patched.png
如果您尝试使用该文件,您将收到错误,因为 

length

 块的 
IHDR
 字段设置为 
50 00 00 0d
,这是一个巨大的数字,这将使 PNG 阅读器尝试读取 1342177293 字节的 
IHDR
 并从锉刀末端掉落。 
IHDR
 的正确长度是 13 个字节,因此应该是 
00 00 00 0d
。所以,我走出了值得信赖的老
xxd
sed
并改变了它:

xxd -p npc_alisa.png | sed -e '1s/00/89/' -e '1s/1a0a50/1a0a00/' > patched.png

© www.soinside.com 2019 - 2024. All rights reserved.