代码检查:DOTS: IAspect 字段必须为以下类型之一:RefRW、RefRO、EnabledRefRW、EnabledRefRO、DynamicBuffer 或 Entity
在 Unity DOTS(数据导向技术栈)中, IAspect 声明必须遵循 ECS 字段类型的特定模式。 此检查确保实现 Unity.Entities.IAspect 的结构体中的字段使用有效的访问器类型。
为什么这会导致问题?
类型为实现 IComponentData 的结构体的字段,不能作为 IAspect 中的字段直接访问。 它们必须用特定的访问器类型包装,如 RefRW<T> 或 RefRO<T> ,以正确地与 ECS 数据流交互。 直接使用组件字段将在 Unity 的 DOTS 框架中导致编译或运行时错误。
有效访问器类型
在 IAspect 结构体中,字段必须为以下类型之一:
RefRW<T>(读写引用)RefRO<T>(只读引用)EnabledRefRW<T>(可启用组件的读写引用)EnabledRefRO<T>(可启用组件的只读引用)DynamicBuffer<T>Entity
修正方法
请使用适当的访问器包装有问题的字段类型。 ReSharper 提供了一键修复,可自动用有效的访问器包装字段。 在 EnabledRef 和 Ref 访问器之间的选择,取决于组件类型是否同时实现 IEnableableComponent。
public readonly SomeComponentData SomeField;
public readonly RefRO<SomeComponentData> SomeField;
2026年 5月 8日