主要的Xcode 7雪碧套件地图集错误

所以今天我决定开始在El Capitan和iOS 9上testing我的游戏。这是我在业余时间工作了近2年的一个大型项目。 所以我把我的代码移植到Swift 2.0中,点击运行button,并且祈祷Apple没有破坏Sprite Kit(就像他们过去一样, 一 , 二 , 三 , 四 ,甚至不让我开始形状节点…)。 所以我的游戏启动了,你知道些什么 – 我所有的节点都是错误定位的,以及我的animation纹理。 其他一些小错误,如抽签计数没有显示,但是这些小错误,希望他们也将被固定。

所以我开始debugging,最终我能够发现大多数问题都与我的地图集中的节点没有正确定位有关。 所以我只用一个节点创build了一个示例项目,如下所示。 你可以在图中看到我将节点锚点设置为(0,0),并将位置设置为(0,0)。 场景的定位点也是(0,0)。 我打印出所有这些值来validation它们是正确的。

在这里输入图像说明

你也可以看到它在编辑器中正确绘制。 但是,当我启动游戏时,我得到以下内容:

在这里输入图像说明

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

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

如果我不使用地图集,则节点如下所示正确绘制。 不过,我显然希望使用地图集,以便批量渲染节点。

在这里输入图像说明

我已经在雷达上提交了这个bug。 有没有人find解决这个问题,不涉及不使用地图集?

我发现了一个解决方法,因为我发布的问题。 希望这可以帮助遇到问题的其他人。 希望苹果公司在最终版本发布前修复这个重大bug。

如果使用新的XCAssets地图集并且将部署目标设置为最新版本,则该节点将被正确渲染。 所以你所要做的就是将所有的图集移到XCAssets。 这虽然影响了iOS 8 / Yosemite的向后兼容性。

在这里输入图像说明