在渲染器中同步执行 2 个任务:及时更新

Doing 2 tasks synchronously in renderer: update at time

我正在尝试在 func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) { 内同时淡入不同节点的同时淡出一个节点。

我想知道在后台线程上执行其中一个 SCNActions 是否可行?

谢谢。

SCNAction 是 SceneKit 提供的一个很好的实用程序 class,用于在每次渲染场景时以小的增量修改属性,从而提供漂亮的动画。

每次渲染场景时只调用一次updateAtTime函数。在此功能中,您可以修改场景,这些修改将立即显示。只需对场景进行少量增量更改,即可获得与 SCNAction 相同的动画效果。

例如;在你的 updateAtTime 函数中尝试放入类似下面的东西。这应该淡出你的 myNodeA 节点,并淡入 myNodeB (假设场景设置将不透明度设置为 0)总共100 帧。

self.myNodeA.opacity -= 0.01
self.myNodeB.opacity += 0.01

反对 运行 从后台线程中使用 SCNAction,尤其是在 updateAtTime 函数中。两者都是实现您想要的目标的非常有效的方法,只需使用其中之一(而不是两者)。

Documentation is worth a read