ECS设计模式笔记

思想

  • 组合优于继承

  • 数据驱动编程

  • ECS的产生是基于这样的假设:在现代游戏架构中,简化game loop比其他任何事情都重要。

Entity-Component-System 实体-组件-系统

  • 组件仅仅包含代表其特性的数据(即没有方法。
    • Singleton Component:在上下文中只有一个实例的组件。
  • 实体是游戏内的基本单元。每个实体由一个或多个组件构成。在程序中实体由一个ID,这个ID对应了其应包含的组件集合。
  • 系统是对实体进行操作的工具,只有方法,没有数据。
  • 实用函数UtilityFunction :用来解决多个系统代码服用的。将被多个系统调用的方法单独提取出来,放到统一的地方。同系统一样, UtilityFunction 中不能存放状态,它应该是拥有各个方法的纯净集合。

例子

看过了一个ECS的小例子,其实一个完整的基于ECS的游戏框架理解起来很简单。

  • 我们知道游戏代码都是基于一个game loop循环的。在ECS架构中game loop就由一个个system组成,注意system的前后顺序是很关键的。

  • system怎么得到与其相关的组件呢?考虑一个最简单的方法,将所有的Entity做成一个数组Entities。将Entities传递给每个system。system里循环检测每个entities是否含有相关组件,有的话就进行处理。实际工作中有更高效的办法:每个系统仅处理与手头工作直接相关的数据。每个系统只接触所需的特定组件,而不会加载完整的实体。

参考

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值