您当前所在位置: > 爆料站 > 君子堂

ECS的核心概念

时间:2020-12-21 10:30:41  来源:  作者:网络转载
机甲核心 PC版

机甲核心 PC版

大小:更新:2020-09-11

分类:正版游戏

ECS架构的核心是数据,这也是为什么Unity会将这一套技术栈命名为DOTS。System会读取entity上面的component的数据流,并处理数据。实体在这里其实更像是索引,它本身并不包含任何数据和逻辑。

ECS包含三个部分:实体(entities)、数据(components)、行为(system)。具体看下图:


这个图中,System读取了多个实体的Translation和Rotation组件,然后经过计算处理,将结果更新到LocalToWorld组件中。

从图中你可以看到,实体A和B还有Renderer组件,但是C并没有。不过这并不会影响System的计算逻辑,因为这个系统不关心Renderer组件。

你还可以写一个系统,需要处理Renderer组件,这样系统就会忽略实体C。你还可以写一个系统排除包含Renderer组件的实体,这样系统就会忽略实体A和B。

下面对ECS中比较重要的几个核心概念做一个梳理:

原型 Archetypes

多个组件的组合叫做一个原型。

比如一个3D物体可能会包含用于transform的组件,包括移动、旋转、渲染,每个3D物体对应一个实体,但是他们都有同样的组件,所以ECS会把他们分类成是一类原型。


在上图中,实体A和B的原型都是M,实体C的原型是N。

你也可以通过在运行时添加或者移除component来改变一个实体的原型。例如:如果将实体B的Renderer组件移除,实体B的原型就会变成N。

内存块 Memory Chunks

为什么要先讲原型的概念呢,因为一个实体的原型是什么,决定了ECS会将实体的components也就是数据存在什么地方。ECS按块分配内存,每块用一个ArchetypeChunk对象表示。

一个块只包含一种原型,可以包含的多个实体的数据。如果一个块的内存满了,ECS会分配一个新的块来存储新的实体的components。

如果你修改了实体的组件,那就相当于修改了实体的原型,这时候ECS会将实体的组件数据移到另外一个块中。


原型和内存块的关系是一对多的关系。这就意味着,如果想查询给定的一组component类型的所有实体,只需要在这些原型中搜索即可。这样会比在所有的实体中查找效率高很多。

ECS在存储实体到内存块中没有特殊的排序,当创建一个实体或者实体的原型发生变化时,ECS会将它放到对应原型的第一个还有空间的内存块中。内存块中的数据会紧密排列。如果一个实体要被移出当前原型的内存块,这时候会有个空位,ECS会把这个内存块最后的实体数据移动到这个空位中。

注意:原型中的共享组件(后面会具体说这是个什么东东)的数据也会影响实体会被存在哪个内存块。同一个内存块中的所有实体的共享组件中的数据值都是相同的。如果你修改了共享组件中的数据,这个实体会被移到另外一个块中,有点类似修改了实体的原型。

将共享组件的实体分到一个内存块中会提高处理他们的速度。比如Hybird Renderer(混合渲染)定义了RenderMesh组件来达成这个目的。

实体查询

一个System根据什么来决定处理哪些实体呢?这时候会用到一个叫实体查询(Entity Query)的东西。实体查询首先需要一些组件类型,然后根据你传入的组件类型的组合,在包含这些组件的原型中查询符合要求的实体。查询时可以指定下面三种类型:

  • All 必须包含All中所有的组件类型
  • Any 必须包含Any中至少一个组件类型
  • None 不能包含None中任意一个组件类型

一次实体查询的结果会返回所有符合查询要求的内存块,你可以使用IJobChunk来迭代遍历所有的组件。(IJobChunk后面会讲。)

Jobs 作业

之前说过,ECS配合Job使用才能发挥多线程的威力。ECS提供了SystemBase类,其中包含Entities.ForEach方法,还包含了IJobChunk的Schedule()和ScheduleParallel()方法,可以在子线程中处理数据。Entities.ForEach是最简单的方法,只需要几行代码就能实现。IJobChunk可以用来处理比较复杂的情况。

ECS会在主线程调度Job,根据System的顺序。当job调度后,ECS会追踪哪些job在读写哪些组件。需要读权限的job需要等待前面写权限的job执行完,反之亦然。Job调度器会使用job依赖来决定哪些job可以并行,哪些必须串行。

System的组织

ECS通过World和group来组织system。默认情况下,ECS会创建一个默认的World,包含一些预定义的group组。它会找到工程中所有的System,实例化他们,并添加到预定义的group中。

你可以指定同一个group中system的Update的执行顺序。Group也是一种system,所以你可以将一个group添加到另外一个group中。如果你没有指定顺序,system的执行顺序会不太确定,并不会按照它们创建的顺序。不过,同一个group中的所有system都会比下一个group中的system先执行。

System的Update是在主线程中执行的,不过可以使用Job将工作分配到子线程中。

ECS世界的可视化创建(authoring)

在Unity中没办法直接可视化地创建DOTS世界,但是,可以先用GameOjbect和MonoBehaviour来创建,然后通过转换系统将GameObject转换成实体和组件。这个我们后面也会细讲。


来源:Unity官方平台
原文:https://mp.weixin.qq.com/s/Tvtqz51Np7vWeYwKcQtHdQ

资源转载网络,如有侵权联系删除。
相关下载

玩家评论

中国移动张同须:“四措并举”攻关核心技术

  在举行的“2020通信产业大会暨第十五届通信技术年会”上,中国移动研究院院长张同须指出,当前5G创新进入深水区,6G研究进入“无人区”,我国进一步引领详情>>

阅读: 2
日期: 2020-12-19
LOL:硬币哥自述现在不算是核心选手了,FPX核心是下路组!

比来良多选手们都在积极备战S11了,究竟良多选手都将在S11打破本身,都在积极的演习中!而近日硬币哥在演习时就有被网友们问了如许一个问题,下个赛季FPX的焦点选手照样不是详情>>

阅读: 5
日期: 2020-12-14
浦东的核心竞争力大幅增强,基本形成以

青年大学习第十详情>>

阅读: 4
日期: 2020-12-08
Intel官宣首款10nm+至强:32核心掀翻对手64核心

  Intel 10nm工艺目前仍然局限于低功耗的轻薄本领域,高性能的游戏本、服务器都得等明年(桌面快则明年底慢则后年初),其中服务器领域是代号Ice Lake-SP的第三代可扩展至强,详情>>

阅读: 5
日期: 2020-11-18
锐龙95850X:零售12核心第一次只要65W

  AMD日前正式发布了Zen3架构的锐龙5000系列桌面处理器,首发四款型号,分别是16核心的锐龙9 5950X、12核心的锐龙9 5900X、8核心的锐龙7 5800X、6核心的锐龙5 5600X,热设计详情>>

阅读: 3
日期: 2020-10-22
2K屏+骁龙875三星GalaxyS21+核心参数曝光

  高通将于12月1日发布年度旗舰处理器骁龙875, 首批商用厂商就包括三星,机型则是 Galaxy S21系列 。  今天爆料人Anthony曝光了三星Galaxy S21+的核心参数, 它采用6详情>>

阅读: 11
日期: 2020-10-14
NVIDIA发布RTXA6000/A40:满血10752个CUDA核心

  如节前预告,在日前举办的GTC 2020(GPU技术大会)主题演讲中, NVIDIA正式揭晓了采用8nm工艺Ampere(安培)架构的RTX A6000、RTX A40两款专业图形卡和计算卡,分别面向工作站和详情>>

阅读: 29
日期: 2020-10-06
杨元庆:把服务和解决方案打造成联想新核心竞争力

  联想集团董事长兼 CEO 杨元庆今日发布内部信称,凭借在防疫抗疫和复工复产 “战役”中的出色表现,凭借对智能化转型战略的坚定执行,我们连续两个财季都取得了超详情>>

阅读: 5
日期: 2020-09-27
云顶核心英雄

原标题:云顶核心英雄 核心英雄 这个版本烬伤害巨高,所以这个版本烬会变得非常的抢手,没办法,只能证明烬实在是太强了,新版本烬没什么变化,但是因为第四详情>>

阅读: 6
日期: 2020-09-22
练腹肌跟核心肌群,不是一回事!如何强化核心肌群?_训练

原标题:练腹肌跟核心肌群,不是一回事!如何强化核心肌群? 有一句话说的很好,就是做什么都要明确自己的目标,才能取得更好的成功。 那么对于健身来说,我们详情>>

阅读: 3
日期: 2020-08-31
王者荣耀官方IP核心团怎么进入?最新一期核心团招募公告

王者荣耀官方IP核心团怎么进入?王者荣耀此前就给大家带来了IP核心团这个群体,官方引领的IP核心团只招募忠实玩家,这让很多玩家都想加入到核心团中,那么小编就为大家带来最新一详情>>

阅读: 12
日期: 2020-08-13
崩坏3断罪核心怎么获得-崩坏3断罪核心获取攻略

崩坏3断罪核心怎么获得?断罪核心获取途径是什么?还不清楚的小伙伴看过来,这里234游戏网小编为大家带来崩坏3断罪核心获取攻略的详细介绍!有兴趣的小伙伴不要错过喔! 崩坏详情>>

阅读: 8
日期: 2020-08-13
辐射4核融合核心怎么充电_辐射4核融合核心充电详情_快吧单机游戏

作者: 奥尔加 2020-08-11 13:41 整理 辐射4核融合核心不能充电,用到快没电拔下来详情>>

阅读: 30
日期: 2020-08-11
7nm、24核心、DDR5、PCIe4.0:Intel一下子都有!

  早在2019年初的CES大展上,Intel就宣布了基于10nm工艺、面向5G无线基站的Snow Ridge SoC处理器,直到今年2月底才正式发布, 定名凌动Atom P5900 ,但没有公布具体规格。 详情>>

阅读: 15
日期: 2020-08-07
云顶10.15大魔法使 风女成星守狙神核心

云顶之弈中的风女迦娜是单人羁绊大魔法使,羁绊的效果是使友方星之守护者英雄的普通攻击转化为真实伤害,所有其他友军的普通攻击转化为魔法伤害。普详情>>

阅读: 3
日期: 2020-07-26
轩辕剑剑之源木系核心伙伴养成推荐 木系核心伙伴选择

轩辕剑剑之源木系核心伙伴对于我们来说养成绝对是不亏的,因为本身的强度问题,在各个阵容中都能够进行使用,下面小编带来的就是轩辕剑剑之源木系核心伙伴养成推荐,一起来详情>>

阅读: 25
日期: 2020-07-24
外媒:谷歌Pixel相机核心人物Marc Levoy已入职Adobe

  据外媒The Verge消息,谷歌Pixel相机团队的核心人物Marc Levoy现已正式入职Adobe。Marc Levoy将为Adobe构建通用相机应用程序,利用算法来提升拍照的成像效果。   Mar详情>>

阅读: 3
日期: 2020-07-21
AMD正式发布线程撕裂者PRO:64核心秒杀28核心

  AMD刚刚正式发布了全新的 锐龙线程撕裂者PRO(Ryzen ThreadRipper PRO)系列处理器,专门面向专业工作站 ,拥有无与伦比的超多核心/线程优势,以及不俗的频率,非常适合艺术详情>>

阅读: 24
日期: 2020-07-15
《刀剑神域彼岸游境》战斗系统核心是什么 战斗系统核心介绍

  刀剑神域彼岸游境战斗系统核心是什么?很多小伙伴可能对游戏的战斗系统还不了解吧,今天小编给大家带来刀剑神域彼岸游境战斗系统核心介绍,快来看一下吧。 刀剑神域彼岸游详情>>

阅读: 19
日期: 2020-07-12
《三国志幻想大陆手游》普通玩家选哪个做核心 普通阵容核心武将推荐

导 读 游戏包含的众多武将,对于土豪来说,通通氪金培养就完了,但是对于一些平民玩家来说,该选择哪个武将当做自己的核心C位,才能发挥最好的效果呢? 吕布:作为平民核心武将的首选,吕详情>>

阅读: 6
日期: 2020-07-03
fgo创世灭亡轮回从者选什么-fgo创世灭亡轮回核心从者推荐_快吧手游

目前fgo更新了2.4章的主线剧情,不少玩家已经开始了解并攻略剧情了,在主线的推进过程中我们免不了要和敌人战斗,那么在这个章节的主线中我们应该选择哪些从者呢,从者详情>>

阅读: 11
日期: 2020-06-30
引领手机消费趋势京东618用服务打造平台核心竞争力

  近日,国家统计局主管的中国市场信息调查业协会发布《2020年“6.18”手机B2C线上市场分析报告》(以下简称“报告”),针对手机品类的线上市场消费趋势详情>>

阅读: 7
日期: 2020-06-28
量子特攻增强核心是什么 增强核心解析攻略

量子特攻这款游戏里武器除了倍镜、弹夹之外,还有一个极为重要的配件:增强核心。但不少玩家还不了解,这款核心的作用和提升,接下来就让小编给玩家们带来增强核心的具体介绍攻略。详情>>

阅读: 9
日期: 2020-06-24
Ampere发布80核心ARM处理器:年底冲到128核心

  本文来自快科技   ARM架构如今红得发紫,不但在移动领域绝对统治,还在数据中心、云服务、高性能计算领域高歌猛进,不少厂商都发布了多核心、高频率的ARM处理器,当今世界详情>>

阅读: 14
日期: 2020-06-24
死亡核心steam版值得玩吗死亡核心最低电脑配置要求

死亡核心是一款酷炫的爬塔跑酷类第一人称枪战射击类游戏,游戏中玩家需要在酷炫的科幻世界,不断克服关卡的挑战,不断攀爬更高的塔层。游戏在steam收获了85%的好评率,十分推荐玩家详情>>

阅读: 10
日期: 2020-06-23
与TES核心野王卡萨交锋H4cker训练数据值得高看

原标题:与TES核心野王卡萨交锋 H4cker训练数据值得高看 6月16日,精彩的LPL赛事继续推进,今日共有两场看点满满的BO3常规赛与观众见面,首先上场的两支详情>>

阅读: 14
日期: 2020-06-16
苹果发问iPhoneSE的核心竞争力网友:便宜吗?

  苹果的新一代iPhone SE(以下简称SE2)发布有段时间了,这段时间销售也很火爆,毕竟是难得的小屏旗舰。今天苹果官方公众号发文谈SE2的核心竞争力,结果引发网友吐槽。  苹果详情>>

阅读: 11
日期: 2020-06-15
《万智牌》2021核心系列独家单卡预览

  大家好,我是跑得快。  又到了《万智牌》新系列的预览环节,游戏时光VGtime再次与威世智合作,带来一张独家预览卡牌,看!「无私救助犬」生物~狗牺牲无私救助犬:另一个目标由你详情>>

阅读: 14
日期: 2020-06-08
哈利波特魔法觉醒鸟蛇核心卡组怎么玩 鸟蛇核心卡组搭配推荐

哈利波特魔法觉醒鸟蛇核心卡组怎么玩?游戏中的各种卡组流派也是挺多的,小伙伴们应该都会喜欢尝试不同组合。让我们一起来看看鸟蛇核心卡组怎么玩吧。哈利波特魔法觉醒鸟蛇核详情>>

阅读: 3
日期: 2020-06-07
中望软件融资8000万,CAx核心技术获资本认可

原标题:中望软件融资8000万,CAx核心技术获资本认可 广州中望龙腾软件股份有限公司(以下简称“中望软件”)于近日宣布完成8000万元融资,本轮融资由达晨详情>>

阅读: 9
日期: 2020-06-03
Apple Search Ads避坑指南:核心问题解析答疑

2020年,一方面,疫情的爆发令各行各业均面临着巨大变化,包括Apple Search Ads在内的广告投放自然也受到了影响出现新趋势;另一方面,苹果官方在5月初正式开放了俄罗斯地区的Apple详情>>

阅读: 6
日期: 2020-06-02
江北核心区的还有哪些楼盘可以参加摇号?

江北核心区待开盘的楼盘有扬子江金茂悦、花语熙岸府、大华云江印月及中交G12地块、启迪国际冰雪科技城等; 最快预计报名开盘的应该是扬子江金茂悦,90㎡住宅样板间已经开启预详情>>

阅读: 3
日期: 2020-06-01
红星美凯龙总经理:直播缩短线下服务过程 社会责任是核心竞争力

  每经记者 成锦鸿 每经编辑 凌建平   欲望还在,需求不同。以直播电商为代表的新经济高速发展进一步加速社会经济发展模式和人们生活消费习惯更新迭代。那么,企详情>>

阅读: 15
日期: 2020-06-01
剑与远征囚时之界核心英雄需要哪些

剑与远征囚时之界核心英雄需要哪些?蝴蝶神魔队有哪些英雄?在这次的团队远征活动里面对于玩家来说最重要的英雄就是蝴蝶神魔队,所以玩家也是需要优先选择培养的,毕竟这个队伍是玩详情>>

阅读: 33
日期: 2020-05-28
欣奕华国产OLED蒸镀机让显示产业上游核心设备实现“自发光”

原标题:欣奕华国产OLED蒸镀机让显示产业上游核心设备实现“自发光” 近日,MicroOLED、OLED照明量产所使用的欣奕华 G2蒸镀设备样机宣布完成进一步调详情>>

阅读: 21
日期: 2020-05-27
开局一把剑核心卡选择推荐 核心卡怎么选

开局一把剑中核心卡应该如何选择搭配呢?在搭配核心卡的时候玩家应该注意些什么呢?下面就跟随小编一起来了解一下吧! 开局一把剑核心卡选择推荐 核心卡牌: 主动技能:三种攻击多详情>>

阅读: 5
日期: 2020-05-26
开局一把剑核心卡选择推荐核心卡怎么选

开局一把剑中核心卡应该如何选择搭配呢?在搭配核心卡的时候玩家应该注意些什么呢?下面就跟随小编一起来了解一下吧!开局一把剑核心卡选择推荐 核心卡牌:主动技能:三种攻击多次普详情>>

阅读: 8
日期: 2020-05-26
腐烂国度2CLEO核心有什么用-CLEO核心作用介绍

腐烂国度2中的CLEO核心是很重要的道具,很多玩家都不太清楚CLEO核心的作用是什么,下面234游戏网就给大家带来了CLEO核心作用介绍,一起来看看吧。 CLEO核心作用介绍详情>>

阅读: 78
日期: 2020-05-26
隐世录战斗核心是什么 游戏战斗核心介绍

隐世录战斗核心是什么呢?隐世录是一款题材新颖的BUG手游,很多玩家都对这款风格比较新颖的游戏很感兴趣,下面小编就来给大家介绍下游戏中的战斗核心是什么,一起来看看吧。详情>>

阅读: 9
日期: 2020-05-25
江畔都会上城是没希望了,概率太低,接下来江北核心区还有哪些楼盘要开盘?

可以关注下融侨誉江府、花语熙岸府、扬子江金茂悦等;融侨誉江府、扬子江金茂悦预计6、7月加推,花语熙岸府预计7月中旬上市。,栖越府,融侨,中铁,金茂,德信烟岚云庄,融侨誉江府,融详情>>

阅读: 6
日期: 2020-05-21
精彩推荐