Реализация древовидных структур данных в Unreal Engine

Я работаю над приложением Палеоэнциклопедии. У меня хорошее начало, и я могу получить нужные мне данные из Google Sheet и поместить их в массив. Я подхожу к той части, где хочу реализовать функции поиска и фильтрации. На переднем плане находится кладистика, или «генеалогическое древо» динозавров. Я хочу, чтобы Unreal прочитал название динозавра или любой из его групп и знал, в какие более крупные группы они входят и в какие более мелкие группы они входят.

В качестве очень упрощенного примера я построил дерево кладистики птиц (рис. 1). У меня есть массив со списком птиц, и я хочу, чтобы Unreal знал, что когда я применяю фильтр «Береговая птица», он возвращает журавля и кулика. Поскольку все, что является Цаплей, также является Береговой Птицей, в этот поиск будут также включены все Цапли. Это очень упрощенная версия, поскольку в реальной жизни десятки животных могут входить в десятки разных групп.

Итак, каков наилучший способ категоризации/хранения/доступа к этой информации? Имейте в виду, что суть этого проекта заключается в использовании Google Sheet для упрощения совместной работы и минимального количества обновлений приложений. Я хочу, чтобы вмешательство в схему было минимальным, поэтому, если кто-то добавляет новую группу или подгруппу в лист, это должно быть отражено в приложении. Я не ищу кого-то, кто напишет за меня код, просто чтобы указать мне правильное направление.

Рисунок1

Я видел, как кто-то в Discord упомянул древовидные структуры и указатели данных, и это похоже на то, что мне нужно, но я понятия не имею, как их реализовать и можно ли их генерировать во время выполнения. У меня есть второе изображение (рис. 2), показывающее, какая логика, по моему мнению, будет работать. Получаем новую запись, видим, к каким группам она принадлежит, и создаем любые новые группы/указатели, которые ей нужны. В основном я использую и предпочитаю чертежи, но при необходимости готов изучить C++.

Рисунок 2

Еще одно соображение, над которым я сейчас работаю, — это использование строки, где при обнаружении нового имени группы присваивается индекс для связи с этой группой. Затем, если внутри есть группа, он присваивает этой группе индекс и помещает его в круглые скобки и так далее. (Рис. 3) Это похоже на ввод массива вручную. Количество групп на «слой» ограничено 10, но для моих целей это может подойти.

Рисунок3

Предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.

Community 17.06.2024 06:46
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
0
1
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

РЕШЕНИЕ: Кто-то на форумах Unreal указал мне на данные JSON, поэтому я немного изучил и купил плагин VARest. После пары часов работы у меня теперь есть динамически обновляемый список кладистики, который гипотетически может охватывать все живое на свете. Так. Да, я думаю, это мне подходит :3

Демонстрация результатов

Узлы чертежей

Другие вопросы по теме