JetBrains Rider 2026.2 Help

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

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

为什么这样有问题?

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

修正方法

请在系统的 OnUpdate 方法(或其他适当但不包括 OnCreate 和 OnDestroy 的方法)内对 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年 8月 5日