【发布时间】:2020-02-24 01:43:03
【问题描述】:
因为 Unity ECS,最近看了很多关于 ECS 的文章。
ECS 架构有许多明显的优势:
ECS 是面向数据的: 数据倾向于线性存储,这是系统访问数据的最佳方式。在体面的 ECS 实施中,数据是按顺序存储和处理的,对于任何给定的系统处理它的组件集,几乎没有中断或没有中断。
ECS 非常分区:它自然地将数据与行为分开,强制执行“组合优于继承”(google it)等。
ECS 对并行处理和多线程非常友好:由于事物的结构化方式,许多实体和组件可以避免冲突并与其他系统并行处理。
然而,ECS 的缺点(与 OOP 或实体组件 [无系统] 相比,直到最近在包括 Unity 在内的游戏引擎中很常见)很少被谈论,如果有的话。它们存在吗?如果有,它们是什么?
【问题讨论】:
-
我想到了“组合优于继承”
-
转向 ecs 编码有点像我们许多人从线性到 oo 所经历的大脑放屁。虽然如何使用 ecs 仍在改变,unity 继续尝试使用它,但核心原则并没有改变一些如何使用,如果你没有时间投资,它有点追逐一个移动的目标。我认为这对于更多电影作品来说是必须的,比如说 5 军之战风格的作品,但对于随机平台游戏或浪费时间的游戏不太可能,rpg 风格......也许但只是也许
标签: oop unity3d architecture entity-component-system data-oriented-design