Unity ECS (DOTS)<一> 概述
一、 Unity 传统开发模式(OOP)
Unity 传统开发模式(MonoBehavior)是面向对象的,使用GameObject + Component + Script 的方式去开发产品。这种研发模式的好处是显而易见,门槛低上手快,即使项目人员流动比较大的情况下, 新人也能很快接手项目。但是其缺点也是很明显的,代码质量不高。首先GameObject上挂载的各类组件在内存上是分散的<缓存命中率低>; 其次数据冗余, 当你只需要对某个对象做单一操作时(如,旋转、移动之类),它会加载所有组件上的数据内容给你, 当处理事务的数量级比较大的时候, 这种加载方式就会显得比较浪费了。
二、 Unity DOTS开发模式(DOP)
DOTS,多线程式数据导向型技术栈。基于ECS,Jobs System、Burst技术的一种面向数据的开发模式,门槛高上手慢,新人几乎无法接手项目。优点则是,数据(ComponentData)与行为(System)是分离的(减少大量系统间的耦合度),缓存命中率高,CPU使用效率高(多线程,SIMD),数据回滚方便等。
在ECS系统中传统组件Component被拆的更细碎了,如以前Transform中包含的位移、旋转、缩放等被拆分成了Translation、Rotation、Scale。它们各自挂在自己的Entity上, 并有着自己System管理。从而达到每个System只需要专心处理好自己的事务,只关心自己要处理的数据。
赞 (0)