本文主要是介绍浅尝一下ECS(Entity Component System)(学习笔记),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
参考文章:浅谈Unity ECS(一)Uniy ECS基础概念介绍:面向未来的ECS - 知乎 (zhihu.com)
视频链接:【青幻译制】GDC讲座系列之三 守望先锋的游戏架构和网络代码_哔哩哔哩_bilibili
云风的 BLOG: 浅谈《守望先锋》中的 ECS 构架 (codingnow.com)
一个典型的 ECS 框架 ↑
世界->是系统和实体的组合 -> 实体是一个组件的集合所对应的ID,组件仅仅用于储存游戏状态,而不具备行为,系统具有行为却不保存游戏状态
组件没有函数,系统没有成员变量
Entity Component System (ECS) 是一个 gameplay 层面的框架,它是建立在渲染引擎、物理引擎之上的,主要解决的问题是如何建立一个模型来处理游戏对象 (Game Object) 的更新操作。
这边最主要区别就是把对象上的数据和行为剥离,由专门的System来处理某一种行为,而不是每个对象在自己的一个更新函数中处理所有和自己相关的操作
Unity ECS基本概念
Entity的概念
它的意义在于生命期管理,这里是用 32bit ID 而不是指针来表示的,另外附着了渲染用到的资源 ID 。因为仅负责生命期管理,而不设计调用其上的方法,用整数 ID 更健壮。整数 ID 更容易指代一个无效的对象,而指针就很难做到。
Entity
为ECS中基本的成员,实际上只是由一个Index和一个Version组成(Version只有在Entity被回收后会加1),其实际的Component数据存储在一个Chunk上(Unity ECS特有的数据类型),需要操作其Component数据时,根据其index到EntityDataManager中找到其所在的Chunk和IndexInChunk,取到对应的Component数据后进行操作。
public struct Entity : IEquatable<Entity>{public int Index;public int Version;...... }
这篇关于浅尝一下ECS(Entity Component System)(学习笔记)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!