Подключение JSON к движку Unreal Engine
Table of contents
В этом гайде расскажем и покажем, как подключать JSON к UE с помощью Struct и blueprints.
Также объясним, как работать с типом данных Subtable (вложенная виртуальная таблица), который применяется в редакторе Ficher.
Что будем делать:
- Используем стандартный проект Top Down.
- В нем изменим скорость бега персонажа, подключив JSON из редактора.
Создаем проект
Создайте стандартный проект Top Down из библиотеки шаблонов игр движка.

В этом проекте создайте папку для хранения структур таблиц и библиотек, экспортированных из Ficher.
Создаем папки в проекте движка
Чтобы создать папку, в нижнем правом углу нажмите Content Drawer. Затем в папке Content добавьте две подпапки:
• Models. В ней будут храниться структуры таблиц.
• Resources – для хранения библиотеки.

Подготавливаем таблицы в редакторе Ficher
Перейдите в редактор Ficher и создайте таблицу. Внесите в нее необходимые для игры данные.

Экспортируем контент из редактора
После того, как весь контент игры подготовлен, экспортируйте его. При выгрузке таблицы автоматически преобразятся в JSON и экспортируются как архив.

Вот как будет выглядеть таблица из редактора после конвертации в JSON:
[
{
"id": 1,
"speed": 10.0,
"name": "Meeseeks",
"data": [
{"id": 1, "level": 1, "agility": 1, "strength": 5, "intelligence": 10},
{"id": 2, "level": 2, "agility": 2, "strength": 6, "intelligence": 11},
{"id": 3, "level": 3, "agility": 3, "strength": 7, "intelligence": 12}
]
},
{
"id": 2,
"speed": 1.0,
"name": "Rimuru",
"data": [
{"id": 1 ,"level": 1, "agility": 1.5, "strength": 4, "intelligence": 9},
{"id": 2, "level": 2, "agility": 2.5, "strength": 5, "intelligence": 10},
{"id": 3, "level": 3, "agility": 3.5, "strength": 6, "intelligence": 11}
]
}
]
Добавляем структуры в UE
Для экспортированной таблицы нужно создать две структуры в движке. Для этого сделайте следующее:
- Нажмите кнопку +Add.
- Выберите вкладку Blueprint → Structure.
- Назовите структуру UnitsStruct.
Для добавления второй структуры повторите предыдущие действия, а название замените на UnitsDataStruct.

Вот что получится в итоге:

В таблице, которую создавали в редакторе, есть subtable, где лежат уровни и характеристики. Чтобы у них тоже была структура, нужен отдельный файл. Иначе UE не сможет их прочитать.
Настраиваем структуры
Редактируем структуру для вложенной таблицы
Сначала настроим структуру вложенной таблицы - UnitsDataStruct. Для этого нужно:
- Создать новую переменную, нажав на кнопку Add Variable.
- Добавить нужное количество переменных и назвать их id, level, agility, strength, intelligence - каждая соответствует колонке в таблице редактора. Укажите тип данных для переменных (пояснение см. ниже).
• если в колонке содержатся числа - выбирайте integer (если однозначно уверены, что числа будут целые) или float (в остальных случаях).
• если в колонке текст - выбирайте string.
Должна получиться такая структура. Сохраните ее.

Редактируем структуру основной таблицы
Теперь перейдите к настройке структуры для основной таблицы.
- Откройте структуру UnitsStruct.
- Добавьте нужное количество переменных и назовите их id, speed, name. Укажите для них тип данных (должен соответствовать тому, что содержится в одноименных колонках таблицы).
Получится следующая структура:

Подключаем структуры друг к другу
Чтобы в движке подключить вложенную таблицу к основной, нужно:
- В структуру основной таблицы добавить переменную data.
- В типе данных нужно найти по названию структуру Units Data Struct и выбрать ее.
В строке переменной рядом с корзиной есть выбор структуры данных. Нажмите на него и выберите Array. Так мы сообщаем, что привязываем массив из структур UnitsDataStruct.
Итоговый результат должен выглядеть так:

Добавляем и сопоставляем JSON
После того, как все структуры настроены, переходим к работе с JSON.
Шаг 1: загрузите распакованный архив из конструктора в ранее созданную папку Resources.

Шаг 2: когда в нижнем правом углу появится диалоговое окно, нажмите в нем Import.

Сопоставляем JSON
После завершения импорта, на экране появится диалоговое окно сопоставления таблицы и структуры, которая соответствует ей в движке:

В этом окне сделайте следующие настройки:
- В Import As выберите Data Table.
- В Choose Data Table Row Type выберите UnitsStruct (ранее созданная структура).
Теперь UE понимает, что таблица units связана со структурой UnitsStruct и может корректно ее обрабатывать.
Настраиваем параметры героя
Когда все необходимые данные загружены в движок и сопоставлены, перейдите к настройке параметров персонажа.
Установите скорость персонажа: в структуре откройте папку Content/TopDown/Blueprints и выберите блюпринт BP_TopDownCharacter.

Чтобы найти параметр скорости нужно:
- Выделить в левом сайдбаре BP_TopDownCharacter.
- В правом сайдбаре в Details ввести Speed, чтобы найти интересующий нас параметр Max Walk Speed.
Настраиваем blueprints
На этом этапе нужно сделать так, чтобы при запуске игры данные читались из загруженного нами JSON-файла, а не из движка. Сделаем простую систему, чтобы загружать нужные данные на старте игры.
Создайте первую ноду для блюпринтов.
- В левом сайдабаре выделите Character Movement.
- Вызовите на нем контекстное меню.
- Нажмите Add Event → Add OnComponentAcitvated.
Появится нода, которая отвечает за активацию компонента, в котором находятся настройки скорости персонажа.
Подключаем таблицу к blueprints
Теперь подключите таблицу units в блюпринт:
Шаг 1
- В ноде On Component Activate нажмите на прозрачный треугольник (команда Exec) и перетяните его.
- Откроется диалоговое окно добавления node.
- В нем найдите и выберите Get Data Table Row.

Шаг 2
Теперь настроим таблицу:
- В появившейся ноде Get Data Table Row в параметрах Data Table выберите таблицу Units.
- В Row Name автоматически выберется первый персонаж. По желанию его можно заменить.
Шаг 3
Далее в ноде нужно отобразить все возможные параметры, которые ранее указывали в структуре:
- Нажмите на Out Row и вызовите контекстное меню.
- Выберите настройку Split Struct Pin.

Появятся все параметры, которые содержатся в таблице.

Добавляем ноду с настройками скорости
Теперь понадобится создать ноду, в которой будут храниться настройки. Для этого:
- В любом месте на карте блюпринта нажмите правой клавишей – откроется контекстное меню.
- В нем найдите Get Character Movement и добавьте его.
Далее добавляем в скрипт установку максимальной скорости:
- Протяните из синего кружка в ноде Character Movement и создайте новую ноду.
- В ней с помощью строки поиска найдите пункт Set Max Walk Speed и выберите его. Новая нода отобразится как Set.

Связываем все этапы между собой
После того, как все настроено и созданы необходимые ноды, их нужно соединить.
Шаг 1: из ноды Get Data Row Table перетяните треугольник из Row Found в Exec ноды Set. Этим мы сообщим скрипту, что если таблица и строка найдены, то нужно выполнить действие в Set.
Шаг 2: из ноды Get Data Row Table соедините круг из Out Row Speed с Max Speed Walk в ноде Set. Этим мы сообщим, откуда читать значения.
В итоге должна получится подобная структура:

После таких настроек вы сможете изменять показатель скорости выбранного персонажа в исходном файле Units.json. После редактирования сохраните JSON-файл, и Unreal предложит реимпортировать значения.