Lea*_*s2D 5 size macos sprite-kit osx-mavericks sktexture
我正在测试OS X版本的Sprite Kit上的游戏,并发现一些纹理不正确地报告它们的大小.我想知道是否有其他人看到这个问题以及是否有解释?
在我将此报告为错误之前,只是为了排除任何其他问题.如果这是一个已知错误,请说出来.
我正在加载这个纹理,它的大小是256x256像素:

当我记录从这个图像创建的SKTexture时,SKTexture描述给了我正确的大小,但size属性没有,它说图像是204.8 x 204.8.
tex = <SKTexture> 'Tileset_GeometryB.png' (256 x 256)
tex.size = {204.80000000000001, 204.80000000000001} // Huh? WTF?!?
tex.textureRect = {{0, 0}, {1, 1}}
Run Code Online (Sandbox Code Playgroud)
我在iOS模拟器和设备上使用相同的代码加载完全相同的纹理 - 大小属性始终是正确的:256x256.
我还尝试在其他任何事情之前加载此纹理,以避免任何可能的副作用.纹理大小仍然是错误的.
值得注意的是,所有纹理都不会发生这种情况,但是在我加载的所有256x256纹理上都会发生这种情况.128x256纹理正确报告其大小.
我也做了一个干净的构建,我正在使用Xcode 5.0.1(5A2053)测试Mavericks(13A603).
显然这个问题是由不兼容的图像程序引起的,在我的例子中,Inkscape 总是罪魁祸首。
Inkscape 创建的 PNG 文件似乎可以正常工作,但会导致 Sprite Kit 错误地报告大小。在每次发生这种情况的情况下,修复方法只是在Seashore中打开 PNG 文件,然后在相同的文件名下“另存为”以强制程序重新保存 PNG 文件。
我认为使用其他图像程序打开和保存也可能有效,甚至预览可能有助于解决此问题或像PNGCrush这样的命令行工具。
还有一定的一致性,因为 Inkscape 纹理大小据报告减少了 20%,即 256 纹理为 204.8,或 1 像素纹理为 0.8。问题似乎出在 Inkscape 的 ppi(每英寸像素)设置上,它不允许值低于 90 ppi。但 Photoshop 的默认值为 72 ppi,正好减少了 20%。我认为 Sprite Kit 假设 PNG 为 72 ppi,获得 90 ppi 图像,因此错误地(或正确地?)计算出 PNG 的大小比实际大小小 20%。
| 归档时间: |
|
| 查看次数: |
928 次 |
| 最近记录: |