代码检查:'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年 5月 8日