Blob Asset:是Unity中存储数据的一种格式,为了流式传输,但仅支持非托管数据(和Shared Component有区别),同时它也是一种只读数据,这表面了我们需要将Entity中的组件数据分离,哪些数据需要Update就不可以放在Blob中,只保留那些不需要改变的数据。Blob Asset的目的在于存储一份数据可以供给多个相同Entity的Component使用,减少了数据冗余。
由于DOTS中我们的数据都是结构体组件形式存储,所以我们无法直接使用Blob Asset,需要通过调用BlobAssetReference上的接口处理。
对于Blob Asset和Share Component的对比,如下图:
参考链接(扩展阅读):Unity DOTS 1.0官方API文档
请结合视频的示例工程阅读,其中需要注意的点是分配的引用内存为永久的,如下图:
=========================================================================
Cleanup Component:简单理解就是销毁一个Entity上除Cleanup Component外的其他组件,而且重新实例化的时候不会生成新的World。
两种Pref方法去实现(建议使用第一种,虽然第二种很好理解):
建议结合案例Lesson10观看视频。
总的来说,这一节课是比较简单的(相对)。
=========================================================================
Chunk Component:按照Chunk存储而不是Entity存储的组件,同样继承IComponentData。区别是添加和移除的API不同,分别为AddComponentData和AddChunkComponentData。同时使用上的API也有所不同,具体可以查看官方文档。
和Shared Component一样,存储在同个World的不同Chunk中(Chunk Component存储在External Components中),但是Shared是以数组的形式存储的,但是Chunk Component是以单个存储的。
有点难0.0~🤮