Ещё архитектурный вопрос:Как правильно инициализировать синьку Heroes?
Сейчас я для каждого героя вызову функцию:
Но с тем же успехом можно сделать переменные доступными для редактирования и заполнить поля в редакторе. Однако, в игре в которой сотни сущностей (герои, враги, предметы, объекты) такую кашу будет очень сложно поддерживать в окне Details.
Я вижу несколько вариантов:1) Синьки-фабрики, в событии Begin Play, конструирующие всё множество необходимых объектов.
(Текущий)2) Массивы или синьки-контейнеры, содержащие редактируемые, но не инициализированные переменные, настраиваемые через окно Details. (Громоздко для больших коллекций)
3) Массив объектов, создаваемый на основе внешних данных, н.п. CSV-таблиц (не существует с точки зрения UE).
4) Синька с предустановленными параметрами для каждого объекта (огромное количество модельных синек без какой-либо логики).
Подскажите верный путь развития.Я бы хотел иметь всего один класс Hero и отдельный редактор, который позволит редактировать список героев, создавая для каждого из них именованную переменную, задавая начальные параметры, коллекция которого доступна из глобального контекста Game Mode.
(Далее сложно!) Совсем замечательно было бы разделить его выхлоп на три уровня абстракции:
1. Неизменяемые в игре шаблоны предустановок, создаваемые редактором, хранящиеся на диске в CSV.
2. Их экземпляры в глобальном контексте, создаваемые на основе шаблонов в оперативной памяти.
3. Их клоны в локальном контексте уровня, с ручной синхронизацией между уровнями.
В этом случае, все параметры, задаваемые в редакторе определяются в отдельной структуре HeroData. Массив таких структур сохраняется / загружается с диска во время работы редактора. GameMode инициализирует по требованию структуру на основе существующего шаблона (опять же HeroData). А уже на сцене создаётся Actor, которому задаётся копия этой структуры, с возможностью сохранить изменения в глобальный контекст.
Если кто-нибудь что-нибудь понял из последнего описания, то было бы здорово услышать ваше мнение:1) Правильный ли это подход?
2) Есть ли смысл разделять п.2 и 3 или вместо копирования стоит передавать ссылку на структуру, а вместо синхронизации "полезных" изменений, откатывать "вредные" посредством Game Save/Load?
3) Как организовать такой вот встроенный в UE редактор коллекции объектов? От Blueprint Structure он должен отличаться возможностью в удобном виде задать значения по умолчанию. В идеале - таблица со скроллами. Уметь работать не только с .assests, но и с .csv.