ECS框架 2.0

 简述ECS的工作原理:
        
        创建一个entity对象, 这只是一个标签 他和后面的 组件的是一个辈份, 用面对对象的方式去理解就是 它是一个家。
      
        新建一个移动组件 moveComponent和渲染组件 readerComponent , 这两个组件分别是记录 位置 x,y 和 sprite,
      
     (注: 为什么说是平辈, 因为他们都将存入map 数组中 map<std::string, std::map<Entity*, ECS::Component*>*>, entity只是一个区分每一个对象的标识)
       
        有了一个对象 和 他的 ui , 移动速度  , 因为他们是的是平辈 如何把它们关联在一起呢 这里有一个EntityManager 这个类就是把 entity 和 component 绑定起来 通过方法addComponentToEntity。

        现在一个对象算是完成了。因为这两个类管理比较严格 没有写逻辑的部分  , 这时候有一个system逻辑类 通过 moveSystem这个逻辑类 负责所有的移动逻辑部分, 它负责和外部沟通 , 通信;
        
        从这里就可以简单的看出 ecs 把数据和逻辑部分区分开来, component 是数据部分额 , system是逻辑部分 , 降低了 数据和逻辑的耦合性, 在我看来最大的好处就是  人物的行为动作更直观 需要让他移动只要加入 一句代码而已 , 不需要它移动只要屏蔽这条代码,这针对于不断该需求的游戏来说是一个解决办法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值