文章目录
- 游戏世界的每个物体都是GameObject
- GameObject由组件来描述
- GameObject的状态如何更新:Tick
- GameObject之间的通信
- GameObject的组织管理
- 各个GO的更新顺序、依赖处理:邮局
游戏世界的每个物体都是GameObject
GameObject,简称GO。每个物体都是GO:动态可控制的作战单位、静态的房屋建筑、环境地形、无形的触发器……
GameObject由组件来描述
GO由小零件组成。我们称之为组件Component
相较于继承,组合更容易描述丰富的物体。
GameObject的状态如何更新:Tick
Tick是让游戏世界动起来的方式。每帧推动游戏世界向前移动一点点。
采用基于组件的Tick方式。如:先Tick动画系统,然后Tick物理系统。这种流水线的方式比按照一个个GO来Tick要更加高效
GameObject之间的通信
采用事件系统来进行。避免直接的方法调用
其具体实现是,被触发的GO只做事件的发送,关心这个事件的GO自行监听
GameObject的组织管理
八叉树、简单网格划分等多种数据结构可选。由于每种结构都存在其优缺点,一般引擎实现多种结构供用户选择
各个GO的更新顺序、依赖处理:邮局
场景中各个GO的更新顺序很重要:当角色坐在车上的时候,应该先移动车再根据车的位置移动角色;先移动角色再根据角色的位置移动其持有的枪支
为了达到上述效果,同时防止组件间的循环依赖,采用一个第三方邮局来进行顺序处理。