ReSharper 2026.1 Help

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

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

为什么这会导致问题?

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

修正方法

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

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日