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

标签 ios sprite-kit scenekit

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

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

背景: 我使用 SCNView.overlaySKScene。我对该叠加层的其中一个子节点进行了无限重复的动画。一旦 SceneKit 场景中发生 Action 和/或动画,覆盖的 2D 内容也会动画化,但一旦 3D 动画停止就会停止。

iOS 9.2.1。

最佳答案

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

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

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

关于ios - 当 SceneKit 动画停止时,SpriteKit 的动画覆盖在 SceneKit 上停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34913997/

相关文章:

Swift 错误 - 尝试将父节点添加为子节点

ios - TableView Controller 代码未被调用

swift - Sprite Kit 从未检测到我的碰撞

ios - Swift - 如果文本与数组中的任何字符串完全匹配

ios - didBeginContact 不触发

ios - SpriteKit 物理在 iOS 9 上巨大的 FPS 下降

objective-c - SpriteKit 作为 SceneKit 的叠加层 SKShapeNode 崩溃

swift - 对 SceneKit 物理体施加力?

ios - 为什么我不能删除或删除 iPhone/iPad 重复的企业应用程序图标副本?

ios - 在 Cordova 混合应用程序中使用 Helvetica Neue