最近DOTS发布了正式的版本, 我们来分享一下DOTS里面Aspect机制,方便大家上手学习掌握Unity DOTS开发。
Aspect 机制概述
当我们使用ECS开发的时候,编写某个功能可能需要某个entity的一些组件,如果我们一个个组件的查询出来,可能参数会写很长。如果我们编写某个功能的时候,需要entity的一些组件的引用,我们如何高效的来获得呢?Unity DOTS引入了Aspect机制。
Aspect是一个特殊的数据结构,可以把它理解为是entity中一些组件的引用Wrapper”包装盒”,把entity中的一些组件的引用包含在一起。方便在System中通过这个Aspect来获取entity当中的组件的引用,高效方便的访问entity中的一些组件数据。定义一个Aspect, 需要继承自Iaspect Interface, Aspect里面的成员可以包含以下的内容:
Entity类型的引用;
RefRW<T> 与RefRO<T>组件数据的引用;
EnabledRefRW与EnabledRefRO的Enable Component组件数据的引用;
DynamicBuffer<T> 类型数据buffer;
shared component 类型的组件的引用;
其它的Aspect类型;
Aspect定义与使用
定义一个Aspect,需要定义一个readonly的partial结构体并继承自接口类IAspect。
using Unity.Entities;
readonly partial struct MyAspect : IAspect
{
// Your Aspect code
}
结构体里面的字段可以使用上面字段所规定的类型, 我们还可以把某个字段通过attribute设置为[Optional]。这样这个字段在entity里面就不是必须的,如果某个entity

本文介绍了UnityDOTS中的Aspect机制,一种用于简化ECS开发、高效访问entity组件的工具。Aspect是包含实体所需组件引用的结构体,有助于减少System中的复杂查询,提升代码可读性。
最低0.47元/天 解锁文章
603

被折叠的 条评论
为什么被折叠?



