学会Render Loop九步,这个框架就学完了(开玩笑?NO!)
这些方法总是按照顺序来执行,因此可以在我们需要实现游戏的逻辑代码的时候能够准去的在相应的方法里注入。
1、Update
:视图在它的代理(SCNSceneRendererDelegate)中调用render(_: updateAtTime:)方法,因此这里是放基本场景刷新的好地方。
2、Execute Actions & Animation
:SceneKit执行的所有动作和表现都被绑定到动画里,并且添加到场景中的节点上执行。
3、Did Apply Animations
:视图调用它的代理方法render(_: didApplyAnimationsAtTime:)。在这里,场景中的所有节点已经完成了动作或者动画的第一帧。
4、Simulates Physics
:SceneKit对场景中所有物体单步执行物理模拟。
5、Did Simulate Physics
:视图调用代理方法render(_: didSimulatePhysicsAtTime:)。在这里,物理模拟已经完成,你可以在物体上添加任何你想实现的逻辑。
6、Evaluates Constraints
:你可以配置SceneKit的规则来估算和添加约束,以便SceneKit自动的调整节点的形变。
7、Will Render Scene
:视图调用代理方法render(_: willRenderScene: atTime),在这里视图准备渲染场景,所以最后需要的执行的代码都要放在这里。
8、Renders Scene In View
:SceneKit在视图上渲染场景。
9、Did Render Scene
:最后一步是调用render(_: didRenderScene: atTime:)。这里完成了render loop里面的一个完整过程。你可以在这里放任何需要在下一个过程执行之前的游戏逻辑。
网友评论