JetBrains Rider 2026.1 Help

代码检查:'ComponentLookup' 类型的字段在使用前必须更新。

在 Unity DOTS(数据导向技术栈)中, ComponentLookup<T> (原为 ComponentDataFromEntity<T> )对象在用于访问组件数据前必须正确同步。 此检查确保系统中的 ComponentLookup 字段每帧都会被更新。

为什么这样有问题?

ComponentLookup 可在不同实体之间访问组件数据。 为确保拥有最新的数据版本并正确处理依赖追踪,必须在每帧使用当前的 SystemState 进行更新。 未调用 .Update(ref state) 可能导致处理过时数据或运行时错误。

修正方法

请在系统的 OnUpdate 方法(或其他适当但不包括 OnCreateOnDestroy 的方法)内对 ComponentLookup 字段调用 .Update(ref state)。 JetBrains Rider 提供快速修复,可自动插入必要的更新调用。

public void OnUpdate(ref SystemState state) { // ... code using myLookup ... }
public void OnUpdate(ref SystemState state) { myLookup.Update(ref state); // ... code using myLookup ... }
2026年 5月 8日