Unity手游实战:从0开始SLG——ECS战斗(二)Entitas插件

上一篇大概讲了ECS的设计思想,有提到优势也有提到劣势,优势是设计层面的,劣势是实现层面的。那么一套好的框架就是要保证如何保持优势的设计,而在实现时规避劣势所带来的问题。

Entitas早于《守望先锋》出现在公众视野,2015年的欧洲Unite大会上,Simon sschmid 分享的演讲《Entity System Architecture with Unity》,然后2016年的 《ECS Architecture with Unity by Example》。除了这两个演讲之外,其他还有很多的资料都存在作者的gitHub上。地址为:Entitas-CSharp。想要深入学习的可以跳到这里去查看资料。

同时Entitas也提供了Store版本的插件,核心内容没有区别,主要是提供了额外的代码生成器,辅助生成各种component代码,传送门在此。

我们的ECS战斗,就是基于这套插件去做的。

Entitas是什么

用官方的话来描述。Entitas是一个超级快速和轻量级的ECS框架,为Unity特殊设计,并且使用C#语言进行开发。内部的缓存性能和组件快速访问速度都是无与伦比,并且它还经过了良好的设计来应对垃圾收集。

在前面的教程里我们引入了Entity-Component-System的概念,那么在这个框架下还要再理解一些概念。不过在理解概念之前,先看一张图:

 

从这张图里可以看到,首先我们有一个Context(可以理解为一个存放当前Entity的池),然后每一个Entity都携带了很多个Component。Component里存放了所需要的Data。再往下可以看到一个Groups的概念,可以理解为根据不同的筛选需求将entity归属在不同的groups里,主要是方便查找。

但是Group毕竟是一个被动分组的过程,那么在运行时还需要有动态收集的需求,这个时候要用到两个东西一个叫Matcher(匹配器),一个叫Collector(收集器)。下面可以看一下用法:

Group:

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值