1

我的 iOS 应用程序(使用 CocosSharp 构建,用于 Xamarin 的 Cocos2D 端口)以 640x960 像素的设计分辨率运行,并且我有一些从 spritesheet 加载的 64x64 精灵。
我正在使用 TexturePacker 创建 spritesheets,并且我对其进行了配置,因此它在帧之间没有任何间距。
每帧都是 64x64 像素,当我检查 spritesheet 时,它看起来非常好。

当我尝试根据帧 (SpriteFrame) 显示 CCSprites 时,它在设备上运行时一直看起来很乱 (iPhone 4)

如果我将每个帧保存为单独的精灵并显示它们,它可以正常工作,但当我使用 SpriteFrame 和精灵表显示它们时就不行了。

这是它在设备上的样子:

在此处输入图像描述

这是它在模拟器中的样子:

在此处输入图像描述

还有其他人经历过吗?
非常感谢所有帮助,我已经坚持了一天!

更新:
这是一个演示该问题的小演示解决方案(需要 Xamarin iOS 构建)。
您可以在模拟器或设备上运行它,两者都显示相同的问题。

SpriteFrame_Issue.zip

4

1 回答 1

0

我不适合“播放” csharp ...但是:plist ok,texture ok,代码看起来不错。此问题是“裁剪”问题,而不是渲染问题。

它让我想起了背景滚动条的一个常见问题,即在 2 个相邻纹理之间突然出现 1 px 的偏移!原来它与“幕后” int->float->int 转换有关,混合了放大/缩小,最终从“浮动”舍入中为您购买了一个额外的像素作为偏移量。对于这种异常,我能提供的最好的方法是“去库中查找”,专注于“spriteFrame”代码库。提示:模拟器是 64 位的,iPhone 4 不是。

于 2015-08-06T20:10:42.370 回答