我正在尝试在 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
函数中。两者都是实现您想要的目标的非常有效的方法,只需使用其中之一(而不是两者)。
关于swift - 在渲染器 : update at time 中同步执行 2 个任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42941643/