Cocos2d iphone 使用SpriteFrame时,CCSprite未正确显示

Cocos2d iphone 使用SpriteFrame时,CCSprite未正确显示,cocos2d-iphone,xamarin,cocossharp,Cocos2d Iphone,Xamarin,Cocossharp,我的iOS应用程序(使用CoCosHarp构建,用于Xamarin的Cocos2D端口)以640x960像素的设计分辨率运行,我有一些从精灵表加载的64x64精灵。 我正在使用TexturePacker创建SpriteSheet,并对其进行了配置,使其在帧之间没有任何间距。 每一帧都是64x64像素,当我检查spritesheet时,它看起来非常好 当我试图基于帧(SpriteFrame)显示ccsprite时,它在设备(iphone4)上运行时看起来总是一团糟 如果我将每个帧保存为单独的精灵并

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

当我试图基于帧(SpriteFrame)显示ccsprite时,它在设备(iphone4)上运行时看起来总是一团糟

如果我将每个帧保存为单独的精灵并显示它们,则效果良好,但在使用精灵帧和精灵表显示它们时效果不佳

以下是它在设备上的外观:

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

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

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


我不习惯“播放”csharp。。。但是:plist ok,纹理ok,代码看起来不错。此问题是“裁剪”问题,而不是渲染问题


这让我想起了一个经常出现的问题,背景滚动条,在两个相邻的纹理之间获得1像素的偏移量!事实证明,它与“引擎盖下”int->float->int转换有关,混合了放大/缩小,最终从“float”舍入中为您购买了一个额外的像素作为偏移量。对于这种异常,我能提供的最好的方法是“在库中查找”,关注“spriteFrame”代码库。提示:模拟器是64位的,iPhone4不是。

我不习惯“播放”csharp。。。但是:plist ok,纹理ok,代码看起来不错。此问题是“裁剪”问题,而不是渲染问题


这让我想起了一个经常出现的问题,背景滚动条,在两个相邻的纹理之间获得1像素的偏移量!事实证明,它与“引擎盖下”int->float->int转换有关,混合了放大/缩小,最终从“float”舍入中为您购买了一个额外的像素作为偏移量。对于这种异常,我能提供的最好的方法是“在库中查找”,关注“spriteFrame”代码库。提示:模拟器是64位的,iPhone4不是。

这是.pvr吗?cocos2d的哪个版本?它是一个包含帧的PLIST。这是CocosSharp 1.5.1,它是Cocos2D的一个端口。如果手动指定精灵帧的CCRECT,也会出现此问题。确定。。。不确定为什么需要为具有C版本的帧编码纹理裁剪。。。但对我来说这看起来像是一个篱笆柱问题。。。texturePacker plists的位置通常是基于0的。但是为什么它在模拟器中工作得很好呢?添加了演示代码,显示了这个问题是a.pvr?cocos2d的哪个版本?它是一个包含帧的PLIST。这是CocosSharp 1.5.1,它是Cocos2D的一个端口。如果手动指定精灵帧的CCRECT,也会出现此问题。确定。。。不确定为什么需要为具有C版本的帧编码纹理裁剪。。。但对我来说这看起来像是一个篱笆柱问题。。。texturePacker plists的位置通常是基于0的。但是为什么它在模拟器中工作得很好呢?添加了演示代码,显示了这个问题你是个天才!我从未想到64/32位的差异,但它非常有意义!我会和CocosSharp的人讨论这个问题,看看是否有可能解决它。同时,我创建了带有选项“挤出:1,边框:2,填充:2”的精灵表,这在视觉上解决了大部分问题,因为“挤出”在每个帧的外部增加了一些额外的像素。你真是个天才!我从未想到64/32位的差异,但它非常有意义!我会和CocosSharp的人讨论这个问题,看看是否有可能解决它。同时,我创建了带有选项“挤出:1,边框:2,填充:2”的精灵表,这在视觉上修复了大部分问题,因为“挤出”会在每一帧的外部增加一些额外的像素