ECS框架文档翻译十八 Component Write​Groups

本文档详细介绍了Unity ECS的WriteGroups特性,包括如何创建WriteGroup、启用WriteGroup筛选、覆盖和扩展使用WriteGroups的系统。WriteGroups允许在不修改原有系统的情况下,重新定义组件的写入源,避免不同系统间的组件更新冲突,提高系统设计的灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下文档均来源于ECS官网:

https://docs.unity3d.com/Packages/com.unity.entities@0.0/manual/ecs_entities.html

WriteGroups(写入组)

常见的ECS模式是让一个系统读取一组输入组件,然后写出到另一组输出组件。 但是,您可能希望覆盖该系统并根据您自己的输入集来更新输出组件。

WriteGroups允许您在不必更改原有系统的情况下,重新定义该系统是否写入指定的组件。 WriteGroup属性用来标识当前组件将成为指定组件的写入源。 对于那些定义了WriteGroup属性的组件,系统在筛选将要更新的实体时,还必须对EntityQuery筛选对象启用WriteGroup选项。

使用WriteGroup属性来定义WriteGroup。此属性将输出目标组件的类型作为参数。 在需要更新目标组件时,需要将该属性放在将会修改目标组件的每个源组件上。 例如,以下声明指定了组件A是针对目标组件W的写入组的一部分:

[WriteGroup(typeof(W))]
public struct A : IComponentData{ public int Value; }

请注意,WriteGroup的目标组件必须包含在查询中,并以可写方式进行访问。否则,该查询的WriteGroup将被忽略。

当你在查询中启用WriteGroup选项时,查询会将所有位于WriteGroup中的组件添加到查询的None列表中,除非它们已经被显式添加到All或Any列表中。因此,如果查询将会仅仅选中这样的实体--如果实体上的某个组件位于一个WriteGroup,那么此组件必须被明确地定义在查询中。如果一个实体具有来自该WriteGroup的一个或多个附加组件,则本查询将会拒绝选

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值