在渲染器中同步执行 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
函数中。两者都是实现您想要的目标的非常有效的方法,只需使用其中之一(而不是两者)。
我正在尝试在 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
函数中。两者都是实现您想要的目标的非常有效的方法,只需使用其中之一(而不是两者)。