主要的Xcode 7 Sprite Kit Atlas Bug

Epi*_*yte 5 macos ios sprite-kit ios9 xcode7

所以今天我决定开始在El Capitan和iOS 9上测试我的游戏.这是一个大型项目,我在业余时间工作了将近2年.所以我将我的代码移植到Swift 2.0,点击运行按钮并祈祷Apple没有破坏Sprite Kit(就像他们过去一样:,,,,甚至没有让我开始形状节点...).所以我的游戏启动了,你知道什么 - 我的所有节点都被错误定位,以及我的动画纹理.其他一些小错误,例如抽奖计数没有显示但是那些很小,希望它们也会被修复.

所以我开始调试,最终我发现大部分问题都与我的地图集中的节点没有正确定位有关.所以我使用一个节点创建了一个如下所示的示例项目.您可以在图片中看到我将节点锚点设置为(0,0)并将位置设置为(0,0).场景的锚点也是(0,0).我打印出所有这些值以验证它们是否正确.

在此输入图像描述

您还可以看到它在编辑器中正确绘制.然而,当我启动游戏时,我得到以下内容:

在此输入图像描述

您可以看到节点绘制不正确.它的位置是(0,0)但是它被绘制了偏移量.并且没有我的场景没有缩放,它匹配视图的大小,并在ResizeFill上设置.

我在El Capitan和iOS 9上都遇到了这个问题.有趣的是,图像包含透明像素越多,问题就越明显.从编辑器屏幕截图中可以看出,我的图像包含许多透明像素,因为我想清楚地显示错误.如果我使用了较少透明的像素,则节点的偏移量会减少.

如果我不使用图集,则正确绘制节点,如下所示.但是我显然想要使用地图集,以便我可以批量渲染我的节点.

在此输入图像描述

我已经在Radar上提交了这个bug.有没有人找到这个问题的解决方法,不涉及不使用地图集?

Epi*_*yte 0

当我发布问题时,我找到了解决方法。希望这可以帮助遇到该问题的其他人。希望苹果在最终版本发布之前修复这个重大错误。

如果您使用新的 XCAssets 图集并将部署目标设置为最新版本,则节点将正确呈现。因此,您所要做的就是将所有地图集移动到 XCAssets。但这会影响 iOS 8/Yosemite 的向后兼容性。

在此输入图像描述