主要 Xcode 7 Sprite Kit Atlas Bug

Major Xcode 7 Sprite Kit Atlas Bug

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

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

也可以看到在编辑器中绘制正确。然而,当我启动游戏时,我得到以下信息:

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

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

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

我已经在 Radar 上提交了这个错误。有没有人找到不涉及不使用地图集的解决方法?

我在发布问题时找到了解决方法。希望这可以帮助遇到此问题的其他人。希望 Apple 在最终版本发布之前修复这个主要错误。

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