Unity中使用ECS的一个目的是高效的利用内存,提高运行速度,另外一个方面从代码层解决复杂的耦合关系。而一个主要的应用,我想是在角色类的设计上,对象和行为分离。如今,为了热更新,客户端逻辑层主要使用的是Lua,主要解决对象和行为分离,提高角色的扩展性。

ECS的本质是数据驱动行为,拥有什么样的Componet就可以执行对应的行为。

ECS:E(Entity)是实体,是C(Component)的拥有者;C是基本数据的组织者;S(System)是C的控制者。

那么Entity怎样去组织Component?System应该怎么样去操作Component呢?

Entity和Component的组织方法有两种:Entity拥有Component,如

1. Entity是Component的集合

Class Entity
{List<Component> components;
}

2. Component拥有Entity的ID,而Entity就只是一个ID就足够了,因为Component标记了其属于谁。

Class Entity
{int id;
}Class Component
{int ownerEntity;//Data
}

System操作Component,就是不同的System对关心的Component进行操作,使用过滤器就能够做到。

而Entity终究有什么用呢,其实就是标记是一个Object,而只有通过这个Entity才能获取数据,才是一个整体。

这里只说对ECS设计的理解,了解了这些,就可以设计ECS系统。对游戏来说,角色的设计 组合优于继承,原因在于,角色的基础都是一样的,角色拥有的Component不一样,就能拥有不同的行为。比如NPC拥有了移动组件就能够移动。可以丰富和解除很多特定的耦合关系。简单来说,Role是System的扯线木偶。

ECS(Entity-Component-System)是什么?相关推荐

  1. Unity2018新功能之Entity Component System(ECS)一

    Entities介绍 Entities是Unity2018新引入的一个全新游戏设计框架,我们称之为实体组件系统(Entity Component System,简称ECS),它的出现使我们能够集中精力 ...

  2. Unity下一轮最大的变革-Entity Component System C# Jobs System

    ECS+jobs实现的酷炫效果 新一代Entity Component System(ECS)将会彻底改变Unity的底层概念(GameObject-Component 系统)和现有工作方式.Mono ...

  3. Entity Component System

    2019独角兽企业重金招聘Python工程师标准>>> http://t-machine.org/index.php/2007/09/03/entity-systems-are-th ...

  4. ECS之Component组件

    洪流学堂,让你快人几步.你好,我是跟着大智学Unity的萌新,我叫小新,最近在跟着大智学习DOTS. Entity之后,咱们来到了Component组件.Component是ECS架构的三个基本元素之 ...

  5. UNITY笔技--DOTS/ECS

    UNITY3D笔技--DOTS/ECS DOTS ECS现状 ECS安装(0.50) ECS原理 思维导图 示例 几个术语 DOTS Data-Oriented Technology Stack (D ...

  6. 麒麟子Cocos Creator 3D研究笔记十一:实用Shader之单张纹理实现武器动态发光

    零.别看广告,看疗效 虽然标题叫武器发光,其实它还能实现魔法护盾.动态光柱等效果.别说话,看图! 阿子最近沉迷于学英语和写代码,可HIGH了. 一看时间,竟然已经十天没发稿了. 但这不能怪阿子,要怪就 ...

  7. Unity DOTS入门教程(Unity2019)

    使用Unity官方新开发的DOTS技术可以让开发者在Unity中创建大量游戏物体而不卡顿,本课程旨在让大家快速入门Unity的DOTS技术,了解和掌握DOTS技术的使用方式. 一.概述 DOTS(Da ...

  8. Dots初探和原理分析

    1.什么是DOTS DOTS是Data-Oriented Tech Stack的缩写,中文名:多线程数据导向型技术堆栈 DOTS由以下3部分内容构成 ECS Entity Component Syst ...

  9. Unity DOTS系统概览

    概述: DOTS主要包含ECS(Entity Component System),Job System,Burst Compiler三部分,ECS为数据存储,Job System为逻辑运算,Burst ...

  10. C# Job System

    概述 设计目的:简单安全地使用多线程,随便就能写出高性能代码 收益:FPS更高,电池消耗更低(Burst编译器) 并行性:C# Job System和Unity Native Job System共享 ...

最新文章

  1. 2022-2028年中国XPS挤塑板行业市场全景评估及产业前景规划报告
  2. R语言ggplot2可视化在可视化图形的X轴标签中添加温度摄氏度符号(add temperature degree symbol on axis label)
  3. Ubuntu终端多窗口分屏Terminator
  4. CG-CTF-Web-文件包含
  5. 【转】winform回车变为tab
  6. javascript写入_如何在JavaScript中写入HTML元素?
  7. python 添加图例_Python | 在图例标签中添加Sigma
  8. 谷歌相册明年取消无限空间储存政策
  9. 外参矩阵(旋转矩阵+平移向量)以及外方位元素的关系
  10. [渝粤教育] 同济大学 线性代数学习指导 参考 资料
  11. NetBeans在Apache基金会取得的进展
  12. 第四章_思科ASDM网管系统搭建(java环境,jdk环境)
  13. ArcGIS拓扑小技巧:两个面矢量合并但不叠加
  14. 用html制作发货单,使用excel制作发货单和送货单模板教程
  15. 聚合支付PC端-银联扫码支付
  16. matlab 求股票斜率,「matlab 求股票斜率」同花顺斜率抓强势股指标公式
  17. Basset: learning the regulatory code of the accessible genome with deep convolutional neural network
  18. php调用ua_PHP判断判断UA:检测客户端是手机或电脑
  19. 2023四省联考 数学 题解
  20. 万字说透 Decentraland:元宇宙的先行者

热门文章

  1. 民航产业发展趋势及对策建议(2021-10-21)
  2. (保姆级)国内1块钱注册火爆全网的OpenAI-ChatGPT机器人
  3. GhostXP_SP3雨林木风纯净版Y7.0(09年12月更新版) 【雪豹】
  4. 《诗经·王风·黍离》
  5. 什么是Batch,什么是Epoch?在训练模型的时候经常看到的参数,自己的见解。
  6. seo如何做外链(做seo外链建设有哪些原则)
  7. 台风怎么看内存颗粒_【评测|内存】美光HDIE、GDIE超频测试
  8. java.lang.NumberFormatException: null原因
  9. 怎么用计算机弹奏忘羡,《忘羡,钢琴谱》魔道祖师 岚之调(五线谱 钢琴曲 指法)-弹吧|蛐蛐钢琴网...
  10. FC-SAN存储技术