【发布时间】:2020-10-28 08:26:39
【问题描述】:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.Entities;
public class AttributesGenerationSystem : ComponentSystem
{
private static EntityManager entityManager;
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
public static void Initialize()
{
entityManager = World.Active.GetOrCreateManager<EntityManager>();
}
protected override void OnUpdate()
{
Entities.ForEach();
}
}
我知道我还没有为 Entities.ForEach(); 输入参数——这不是我的问题。我收到错误消息;
“当前上下文中不存在名称‘实体’”
我在这里做错了吗?
【问题讨论】:
-
对 Unity 了解不多,
Entities是一个命名空间,而不是一个对象。您不能迭代命名空间。查看 Unity 文档以了解如何正确使用 Entities 命名空间中的对象。 -
其实我看了下文档,Entities.ForEach是命名空间中定义的函数。道歉。
-
更新——我知道可能是什么问题。 ECS 是 Unity DOTS 的一部分,它是非常实验性的并且一直在更新。他们一直在弃用其中的重要部分——这让我在遵循几个月前的教程后遇到了严重的问题。
-
它看起来也像乔布斯系统——另一个属于 DOTS 的系统——具有一个功能——IJobForEach——它似乎做的事情与 Entities.ForEach() 完全相同试图做,只是以一种更复杂但公认更优化的方式。明天我将尝试弄清楚工作系统以及明天具体的 IJobForEach。
-
我想我会在这里保留一些关于思考过程的文档(我认为这些论坛应该是这样工作的?)感谢我已经收到的所有帮助——它帮助了很多看到我不仅遗漏了一些明显的东西,而且这实际上是一个可能对其他人有帮助的问题。
标签: c# unity3d entity-component-system