2016-01-21 80 views
2

我想以前有人肯定已经提出过这个问题,但现在我找不到它,所以在此期间,当SceneKit动画停止时,SceneKit上的SpriteKit覆盖的动画会停止

当SceneKit动画停止时,SceneKit上的SpriteKit叠加动画会停止。这是意想不到的。这就像整个SCNView和它的孩子一旦3D内容不移动就进入睡眠状态。我怎样才能让spritekit场景独立于scenekit场景做动画? 更新:我已经确认,如果我添加一个简单的3D盒子,无限期旋转并将其保存在视图中,3D场景不会“睡眠”,覆盖也不会。有没有设置某处停止SceneKit部分睡眠?我使用SCNView.overlaySKScene。我有一个无限重复动画的覆盖层的子节点之一。只要SceneKit场景中的动作和/或动画进行,叠加2D内容也会动画,但3D动画停止后立即停止。

iOS 9.2.1。

回答

6

只有当SceneKit视图知道存在动画时,才会运行其更新/渲染循环。 (因为如果渲染的内容没有变化,渲染只会浪费CPU/GPU的时间并消耗电池电量。)

SceneKit在猜测它应该运行渲染循环时相当保守。如果场景中有CAAnimation s或SCNAction s,或者物理引擎正在做某件事情,它就会运行,但我认为这是关于它的。

如果你有其他想要运行渲染循环的东西(比如覆盖SKScene需要运行自己的游戏循环),只需将视图的playing属性设置为true即可。

+0

谢谢,它的工作。我不知道为什么.overlaySKScene不应该包含在那种保守的猜测中。要么是错误,要么是在.overlaySKScene参考文件中可以更清晰地表达出来...... – Jonny

+0

SpriteKit场景也可能不会一直动画。但是也许SceneKit可能会更好地确定SpriteKit何时想要动画。如果您有想法,我相信他们会欣赏[功能请求](http://bugreport.apple.com)。 – rickster

+1

好吧,我实际上报告这是一个错误。 :-) – Jonny