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

时间:2017-03-22 02:28:36

标签: swift scenekit

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

我想知道在后台线程上做一个SCNActions是否有效?

谢谢。

1 个答案:

答案 0 :(得分:1)

SCNAction是一个很好的实用工具类,它由SceneKit提供,每次渲染场景时都会以小的增量修改属性,从而产生漂亮的动画。

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

例如;在updateAtTime函数中尝试输入以下内容。这应该淡出您的myNodeA节点,并淡入myNodeB(假设场景设置将不透明度设置为0)总共100帧。

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

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

Documentation is worth a read