时间轴组件的程序设计

我理出来数据结构和GameLoop,就成功一半了!

问题列表

  • 应该有哪几个生命周期阶段?

  • 每个阶段应该做什么,不应该做什么?

  • 如何做到数据、逻辑、渲染分离?

  • 如何处理动画?包括中断、两帧之间的无缝切换?

  • 如何解决跨组件的数据传递问题?即当前的state对象

  • 如何管理组件内部的css样式名,应该有个规范

  • 如何设计页面上的布局(这个一定得形成规范,不然理解成本高,而且后面会很乱)

生命周期

Vue的生命周期

vue-lifecycle

Unity

动画更新循环中,有如下一段:

StateMachineBehaviour (OnStateEnter/OnStateUpdate/OnStateExit):一个层最多可以有 3 个活动状态:当前状态、中断状态和下一个状态。使用一个定义 OnStateEnterOnStateUpdateOnStateExit 回调的 StateMachineBehaviour 组件为每个活动状态调用此函数。

这不就是典型的数据驱动么?果然原理上都是相通的。

Unreal Engine

Actor的生命周期

动画的播放、中断等,应该由元素自身的AIController控制:

如果玩家在某个地图中行走时,会有一些其他怪物(具有运动形态)对玩家进行攻击,那么这些怪物也应该继承于一个Pawn类,怪物的技能等功能应该在这个类中进行设计。但这个怪物Pawn的实例被AIController拥有(而不是PlayerController),因为怪物的攻击、巡逻等状态不受玩家控制,而是应该由AI控制(智能控制,自动处理)。

通过PlayerController维持实例之间的信息交互

在游戏过程中,屏幕中显示的玩家/怪物等状态信息应该在HUD类中进行设计。HUD(平头信息显示)、Input(玩家输入)、PlayerCameraManager(摄像机管理)同样被PlayerController拥有,PlayerController负责维持这些实例之间的信息交互

通过GameState管理状态:

GameState:GameState关联了像玩家的列表、分数、象棋游戏中的象棋位置或者在开放世界游戏中已经完成的任务列表等数据,表示当前游戏的状态