UnityECS框架项目实战

ECS是什么?它是一种框架,适用于大场景多物体的游戏,比如一些策略游戏,很多的游戏物体,如果是按照平常的做法,那么性能一定会受到影响,那么这时候我们就可以用ECS框架来做。成功的案例就是守望先锋了,它里面就用到过ECS框架。说了这么多,什么是ECS呢?E:entity(实体),C: component(组件),S:system(组件系统)。它是专门用来处理多物体的一种框架。摒弃了传统的monobebaviour的模式,我们用ECS的时候,是根据组件和组件系统来生成实体的。先给大家看下这节做完后的效果吧。

我们通过这张图可以很明显的发现,场景中的物体貌似很多,但是层级面板上并看不到节点存在,这是不是就很奇怪。按道理来说,untiy中的物体都是要依靠节点存在的。那么这就是ECS的奇特之处了。好了,我们接下来看看具体怎么做吧。

首先的话,我们要用ECS来做项目,第一个就是需要用到高一点的版本,也就是要你的unity能下载安装支持ECS的一些插件。我这里用的是2019.1.2的版本,已经是非常的高了。建议大家和我用一样的。有了这个前提过后,我们就按部就班的创建项目,然后保存场景,再就是导入资源包了。我们需要哪些呢?首先ECS的里面有一个world,然后一个ECS项目中可能有多个world,我们需要选择当前世界活跃的world出来,就像有多个场景一样,我现在想打开主场景,那么我就要双击主场景才能进去,是吧。ECS也是差不多的,我们需要选择一个活跃的world,然后world里面就有ECS的管理器,叫做EntityManage也就是实体管理器。那么问题来了,world在哪里呢?所以我们要先导入资源包,这个资源包就是Entities.然后我们就可以开始制作了。

创建一个继承mono的脚本,然后挂载在随便哪个节点上,然后在start中写生成实体的方法,刚才说了原理,我们要生成实体,就先要用实体的类型,也就是你想生成带有什么组件类型的实体。所以第一步还是需要先来做C(component)。当然最先还是要获取entitymanage这个实体管理器,因为给实体创建实体类型需要用到它里面的方法,然后我们就可以添加组件了。比如实体需要被渲染,所以需要rendermesh组件,实体需要位置的变化,那么就需要translation组件。代码如下:

有了实体类型,我们就可以创建实体了。根据实体的类型就可以创建实体了。创建实体过后,由于没有给实体组件各个类型赋值,所以还是看不见,然后就需要给他们赋值。代码如下:

这样的话,我们的实体就有了组件类型,并且赋值了,然后根据类型来生成对应的实体。这样就能在untiy中看见了。这样就有了E和C了,但是我们的实体是没有任何的行为的,这个时候,我们是不是还有一个S没有做,没错。System就是实体的行为,那么比如我这里让所有的实体都朝着自己的前方移动,所以就需要写system了。代码如下:

有了这个东西过后,你就会发现,它会直接调用起来,即使没有人调用它,这是为什么呢?其实这是因为componentsystem里是有一个抽象方法,这个抽象方法内部会自动的调用的。然后每个component里面都有一个entities的对象,它负责调用所有的Entity,让具有相同实体组件的它们的行为起作用,这样的话,就有了我们开头的那个效果了。今天这节是非常简单的ECS的项目,大家有什么不懂的可以来找我要源码,问我。需要素材源码或者有什么不懂的可以点击链接加群来问点击链接加入群聊【cocos/unity交流群】

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容