Я работаю над приложением Палеоэнциклопедии. У меня хорошее начало, и я могу получить нужные мне данные из Google Sheet и поместить их в массив. Я подхожу к той части, где хочу реализовать функции поиска и фильтрации. На переднем плане находится кладистика, или «генеалогическое древо» динозавров. Я хочу, чтобы Unreal прочитал название динозавра или любой из его групп и знал, в какие более крупные группы они входят и в какие более мелкие группы они входят.
В качестве очень упрощенного примера я построил дерево кладистики птиц (рис. 1). У меня есть массив со списком птиц, и я хочу, чтобы Unreal знал, что когда я применяю фильтр «Береговая птица», он возвращает журавля и кулика. Поскольку все, что является Цаплей, также является Береговой Птицей, в этот поиск будут также включены все Цапли. Это очень упрощенная версия, поскольку в реальной жизни десятки животных могут входить в десятки разных групп.
Итак, каков наилучший способ категоризации/хранения/доступа к этой информации? Имейте в виду, что суть этого проекта заключается в использовании Google Sheet для упрощения совместной работы и минимального количества обновлений приложений. Я хочу, чтобы вмешательство в схему было минимальным, поэтому, если кто-то добавляет новую группу или подгруппу в лист, это должно быть отражено в приложении. Я не ищу кого-то, кто напишет за меня код, просто чтобы указать мне правильное направление.
Я видел, как кто-то в Discord упомянул древовидные структуры и указатели данных, и это похоже на то, что мне нужно, но я понятия не имею, как их реализовать и можно ли их генерировать во время выполнения. У меня есть второе изображение (рис. 2), показывающее, какая логика, по моему мнению, будет работать. Получаем новую запись, видим, к каким группам она принадлежит, и создаем любые новые группы/указатели, которые ей нужны. В основном я использую и предпочитаю чертежи, но при необходимости готов изучить C++.
Еще одно соображение, над которым я сейчас работаю, — это использование строки, где при обнаружении нового имени группы присваивается индекс для связи с этой группой. Затем, если внутри есть группа, он присваивает этой группе индекс и помещает его в круглые скобки и так далее. (Рис. 3) Это похоже на ввод массива вручную. Количество групп на «слой» ограничено 10, но для моих целей это может подойти.



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