ECS 系统
entt
引擎使用的是 entt 库,是用稀疏集来做到 ECS 的。其每次 mRegistry.create()
方法其实就是内部增加,如果一开始这个 Registry 内没有 entity 的话调用这个函数就是从 0 到 1 到 2...
因此其实是不适合用 entt 内部的类型当作 uuid 的,为此我还费劲心思弄了个 uint64_t 的 entt 的 entity 类型,后来发现这样做并不行。因为随机生成的 uint64_t 是不能当 entt 库的 handle 的。
解决方法
最后还是只能回归原始,每个 Entity 挂一个 id 组件,id 组件就是记录 uuid 专门用来做序列化以及作为索引,而 entity 的 handle 就只是 entt 库内部管理。
Last updated