Название «Объекты» не существует в текущем контексте.

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(); — это не моя тема. я получаю сообщение об ошибке;

Название «Объекты» не существует в текущем контексте.

Я делаю что-то не так здесь?


person StLouis9    schedule 08.07.2020    source источник
comment
Не зная много о Unity, Entities — это пространство имен, а не объект. Вы не можете перебирать пространство имен. Ознакомьтесь с документацией Unity, чтобы узнать, как правильно использовать объекты в пространстве имен Entities.   -  person see sharper    schedule 08.07.2020
comment
На самом деле, я посмотрел документацию, и Entities.ForEach — это определенная функция в пространстве имен. Извинения.   -  person see sharper    schedule 08.07.2020
comment
Обновление - у меня есть идея, в чем может быть проблема. ECS является частью Unity DOTS, которая является очень экспериментальной и постоянно обновляется. Они постоянно устаревают важные части этого - это доставило мне серьезные проблемы после обучения даже всего несколько месяцев назад.   -  person StLouis9    schedule 08.07.2020
comment
Также похоже, что система Jobs — еще одна система, являющаяся частью DOTS — имеет функцию — IJobForEach‹› — которая делает то же самое, что и Entities.ForEach(), только в более сложный, но, по общему признанию, более оптимизированный способ. Я собираюсь попытаться выяснить систему работы завтра, а также IJobForEach, особенно завтра.   -  person StLouis9    schedule 08.07.2020
comment
Я подумал, что просто оставлю здесь некоторую документацию о мыслительном процессе (думаю, именно так должны работать эти форумы?) Спасибо за всю помощь, которую я уже получил — мне очень помогло увидеть, что я не просто упускают что-то очевидное, и что на самом деле это вопрос, который потенциально может быть полезен другим.   -  person StLouis9    schedule 08.07.2020


Ответы (1)


Я понял. Я расширил JobComponentSystem и использовал систему заданий Unity вместо устаревшего метода Entities.ForEach(). А потом я попробовал использовать Unity 2019.3 (раньше использовал 2018.4), и все развалилось. Получили тонны сообщений об ошибках и, по-видимому, JobComponentSystem тоже устарела? Так что теперь я решил, что буду ждать, пока команда DOTS закончит это дело, потому что я работаю над большим проектом, и это отсутствие документации в сочетании с постоянно меняющейся библиотекой вызывает у меня головную боль.

TL;DR: никто больше никогда не будет это читать, потому что довольно скоро Unity DOTS станет неузнаваемой, и таких проблем, вероятно, не будет.

person StLouis9    schedule 11.07.2020