ECS框架 2.0
来源:互联网 发布:淘宝禁售 编辑:程序博客网 时间:2024/05/16 14:30
简述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是逻辑部分 , 降低了 数据和逻辑的耦合性, 在我看来最大的好处就是 人物的行为动作更直观 需要让他移动只要加入 一句代码而已 , 不需要它移动只要屏蔽这条代码,这针对于不断该需求的游戏来说是一个解决办法。
创建一个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是逻辑部分 , 降低了 数据和逻辑的耦合性, 在我看来最大的好处就是 人物的行为动作更直观 需要让他移动只要加入 一句代码而已 , 不需要它移动只要屏蔽这条代码,这针对于不断该需求的游戏来说是一个解决办法。
0 0
- ECS框架 2.0
- ECS
- 实体-组件-系统(ECS)实现数据驱动的游戏框架
- ECS linux lnmp.org 安装的环境 安装laravel5框架
- Unity3D ECS框架 Entitas入门学习4 ReactiveSystem原理总结
- 【ECS】云服务器ECS是什么
- Unity3D ECS框架 Entitas入门学习3 Entity关联GameObject,显示一张代表该Entity的图片
- ECS 功能说明
- ECS功能说明
- 阿里云ECS试用
- 阿里云ecs
- 阿里云ECS使用
- 阿里云ECS配置
- 服务端ecs使用mongodb
- 阿里云ECS建站
- 第1章 ECS
- ECS配置Docker-swarm
- 阿里云ECS
- 我的java学习日记(4)
- jquery鼠标移动图片的小例子
- Hibernate 所有缓存机制详解
- Perl处理Excel文件
- Eclipse中java、jsp以及xml编辑界面字体设置
- ECS框架 2.0
- Oracle中的number类型
- git 搭建私有代码库
- 如何使用Windbg自动抓取禁止使用调试器程序的dump
- 【分享】深入浅出WPF全系列教程及源代码
- shell 命令案例
- java.lang.NoSuchFieldError: deferredExpression 原因是web-inf lib下有多个jstl jar包的原因 删除一个重新启动 一切ok !
- 标准的SQL语句类型
- 统计文件频率排名前十个字母