前言
大家好我是IT侠来了!今天我带来的是ECS系列文章。对,没错这是个系列。
这个系列将帮助各位同学入门ECS,会用ECS框架写游戏。最后说不定你也喜欢上了这种“小众”而又牛b的编程思想。
话不说多,今天这篇文章就是让大家对ECS有一个大概认识,不知道大家准备好没有,此时我只想喊一句超级英雄出发前最喜欢喊的一句:“suit up”!!
欢迎来到ECS的世界
正如标题说的一样,欢迎大家来到ECS的世界。
其实我之前有写过一篇文章来说ECS。但是把所有内容都写到一篇里导致文章很长大家也没有读的欲望了,而且写的也不是很好。
所以这次带来了全新的ECS框架和一个使用ECS框架做的一个小游戏「我胃口贼6」我将一步一步的带着大家进入ECS的世界。
ECS 是啥?
ECS的全称是「Entity Component System」可以译成「实体 组件 系统」这3个概念就是ECS框架不可缺少的组成部分。下面依次来介绍下。
实体
实体它在ECS中扮演的是组件的「载体」,实体是不包含任何数据和业务逻辑的。
它的数据结构很简单只有一个全局唯一的ID。
通过实体就可以访问到身上的组件和组件上面的数据。
组件
组件只包含数据,而且没有能力更新自身的数据。
组件上的数据描述了实体的某一个特征。
想要组件产生作用就必须把组件加载到实体上,单独的组件在ECS框架中是没有任何意义的。换句话说就是:组件是为实体而生的。
系统
系统的工作就是操作实体。
你可以给系统定义它所关心的一个或者多个组件。之后只要是实体上有对应的组件,那么就会被系统捕获到。然后就可以操作这些实体和实体上组件。
引擎(世界)
引擎的存在是为了管理实体,组件和驱动系统运转。
其实我更喜欢把「引擎」叫成「世界」。所有实体,组件,系统都是加载一个「世界」里。可以有很多很多的世界彼此没有交集。就像平行时空一样。
ECS中的Hello World
啥语言的第一个例子都是Hello World 下面我就用ECS框架来实现Hello World。
看不懂代码没关系,只是让大家知道用ECS是如何写Hello World的。
在之后的文章我会慢慢讲解。
//初始化一个世界
let ecs = ECS();
//定义说话系统
let _talk = ecs.system("TalkSystem",100);
// 监听有Talk组件的实体
_talk.on("Talk",function(ent:any){
console.log(ent.Talk.say);
});
// 让系统开始工作
ecs.startSystems();
//创建一个实体
let human = ecs.ent();
//给这个实体加一个Talk组件 让他说一句 Hello World
// 下面定义完成之后 Talk系统就会捕获到human实体 并且打印这个实体说的话 - Hello World
ecs.com("Talk",{say:"Hello World"},human);
结束语
本篇文章主要是让大家对ECS框架有个基本认识。
最后用Hello World给本篇文章收一个尾,也为下一篇ECS入门篇开个头。
那么,各位 ECS 入门篇再见。
开发者实践游戏开发、副业挣钱,新的种子又开始发芽!