swift - 在渲染器 : update at time 中同步执行 2 个任务

标签 swift scenekit

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

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

谢谢。

最佳答案

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

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

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

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

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

Documentation is worth a read

关于swift - 在渲染器 : update at time 中同步执行 2 个任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42941643/

相关文章:

ios - 如何知道详细表格 View 的原始单元格索引?

ios - JWT 'RS256' 算法问题

swift - 你能在 Swift 字符串插值中使用字符串/字 rune 字吗?

ios - 如何为 SCNPhysicsShape 声明多个选项

xcode - SceneKit:导入的 dae 文件未复制到应用程序包

swift - 在 swift SceneKit 中绘制带有顶点的自定义节点的示例是什么?

ios - 这是对属性使用 self 属性的正确方法吗?

iOS 10 - 模糊背景不再起作用

ios - 从 URL Xcode 快速加载 3d 资源

objective-c - 为什么 SCNPhysicsBody 在设置 eulerAngles 时会重置位置?