Skip to content

门泊吴船亦已谋

Unity ECS 框架摸索 第七章 评价 Unity 目前版本的 ECS 框架

虽然还是预览版,但我感觉它已经完整地发挥了 ECS 架构的优点,上手也很快

就是坑多,文档不齐,官方例子也有一些小问题

解藕

写了一下发现 System 之间耦合度真的低,通常可以把一连串的依赖调用拆成互不干涉的 System 分别独立进行,比如「子弹命中掉血」与「血量为零死亡」可以拆成两个无关联的系统

我在合并两个项目的时候就直接把 Component 与 System 的代码拷贝过来,两边也互不影响(当然也不能瞎几把玩)

但是有个问题是系统的调用顺序可能会对最终处理结果有影响,比如物理引擎还有网络同步
手动处理调用顺序的感觉有点像在 DAG 上做拓排
讲真我甚至觉得有一点面向过程

内存友好

Unity 的 Chunk 管理机制能够兼顾顺序访问与组件增删

并且具有比较完整的筛选功能

并行

使用 Job 就能轻松处理并行

而且居然还支持 Lambda

更新很快

我感觉每隔十几天就更新一次,速度飞快

而且其实去年就在写这个系列了,然后磨蹭了几个月发现两个大更新,我吐了。API 变了一点,于是代码只能全部重跑一遍

还不能纯 ECS

目前 Mesh 和 Camera 都没有 ECS 版的,Prefab 也只能将就一下

需要写一些临时代码把 GameObject 转化为 Entity 与 Component

什么时候能用于 Production

物理引擎跟微软合作,已经能在 Package Manager 中安装了,说明 API 应该也稳定了吧

官方还说今年会有 1.0 版本

Production 可能要等个两年

项目案例

基于 Unity DOTS 写的坦克大乱斗游戏,很大程度上参考了 Unity 官方文档和示例,可以作为一个学习的简单例子

https://github.com/paakmau/JustFight