SKCameraNode和Xcode调试视图层次结构

当我刚刚开始SpriteKit之旅时,我确实发现了许多问题。 当然,最常见的原因是我缺乏对Swift和Apple框架的经验,因此寻找解决方案可以帮助我学习和发展。

有时我会遇到不必要的事情,就像我前一天进入Xcode的Debug View Hierarchy 。 当涉及到SpriteKitSKCameraNode和当前版本的Xcode v9.3.1中的调试器时,我确实遇到了一些特殊的行为。

我设置了一个非常基本的SpriteKit项目,以清楚地显示行为。 在这里,我们在SpriteKit编辑器中只有8个精灵。 正如我们所期望的,运行该应用程序将为我们提供与编辑器中完全相同的视图。

因此,让我们在运行应用程序时输入视图调试器,瞧,我们在调试器中也获得了完全相同的视图,就像在应用程序和编辑器中一样。

到目前为止,到目前为止,我们现在将SKCameraNode添加到场景中并再次执行相同的测试。

添加了SKCameraNode并再次运行该应用程序后,我们仍然可以获得预期的结果。 相机会看到我们定义的场景,并且应用程序中的视图正确。

因此,让我们再次输入Debug View Hierarchy

哇!

这不是我期望的。 运行该应用程序时的视图是正确的,与编辑器中的视图相同,但是在调试器中获得的视图是不同的。 该视图似乎偏移了半个屏幕。 在将摄像机添加到场景(包括在开始新项目时添加到默认SpriteKit场景)后,就会始终发生这种情况。

通过SpritKit编辑器添加相机,或者以编程方式通过代码添加相机,这没有什么区别。

我发现通过将场景的锚点从默认值(0.5, 0.5) 0.5,0.5 (0.5, 0.5)更改为(0, 0)解决此问题,然后调试视图可以与SKCameraNode一起使用。

更改锚点会使调试器在使用相机时按预期显示视图,但除非场景的锚点(0,0)对我而言似乎不正确,否则无法将调试视图与SpriteKit和SKCameraNode一起使用,或成为预期的行为。

我希望调试器在运行应用程序时显示与我看到的视图相同的视图,无论我在场景中使用的锚点是什么。

这是Xcode v9.3.1中的错误吗? 还是我错过了什么?


最初于 2018 年5月16日 发布在 code.bitbebop.com