当 SceneKit 动画停止时,SpriteKit 的动画覆盖在 SceneKit 上停止

Animations of SpriteKit overlay on SceneKit stops when SceneKit animations stop

我想之前一定有人问过这个问题,但我现在找不到,所以暂时先到这里。

当 SceneKit 动画停止时,SpriteKit 的动画覆盖在 SceneKit 上。这是出乎意料的。就像整个 SCNView 和它的 children 只要 3D 内容不移动就进入睡眠状态。如何使 spritekit 场景独立于 scenekit 场景的作用而动画? 更新:我已经确认,如果我添加一个无限旋转的简单 3D 框并将其保留在某个视图中,则 3D 场景不会 "sleep",叠加层也不会。有什么地方可以阻止 SceneKit 部分休眠吗?

背景: 我使用 SCNView.overlaySKScene。我对该叠加层的其中一个子节点进行了无限重复的动画。一旦动作 and/or 动画在 SceneKit 场景中继续,叠加的 2D 东西也会动画,但一旦 3D 动画停止就会停止。

iOS 9.2.1.

SceneKit 视图 运行 仅当它知道正在播放动画时才会 update/render 循环。 (因为如果要渲染的内容没有变化,渲染只会浪费 CPU/GPU 时间并耗尽电池电量。)

SceneKit 在猜测何时应该 运行 渲染循环时相当保守。它 运行s 如果场景中有 CAAnimations 或 SCNActions 或者如果物理引擎正在做某事,但我认为仅此而已。

如果您有其他想要 运行 渲染循环的东西(比如需要 运行 自己的游戏循环的叠加层 SKScene),只需设置视图的playing 属性 为真。