UStoryKeyManager - mrkriv/QaDS GitHub Wiki
Менеджер ключей
Представляет собой хранилище ключей, на основе контейнера TSet. Ключи имеют тип FName и могут находится в двух состояниях: выдан и отсутствует.
Хранилище предназначено для фиксации игровых событий связанных с заданиями и диалогами. К примеру после прочтения фразы диалога в хранилище записывается определенный ключ, который является условием появления другой фразы или диалога. (К примеру, игрок говорит с персонажем А, после это игрок получает возможность с персонажам В или С на выбор. Затем у персонажа А открывается новый диалог. и т.д.)
Работа с хранилищем
Для получения экземпляра менеджера следует использовать статический метод GetStoryKeyManager. В мире может присутствовать только один экземпляр хранилища, метод получения экземпляра при необходимости создаст новое хранилище.
Добавление и удаление ключей осуществляются методами AddKey и RemoveKey соответственно.
Методы HasKey и DontHasKey позволяют проверить наличие или отсутствие ключа.
Для групповой загрузки ключей предназначены методы Reset GetKeys SetKeys Кроме этого, для реализации сохранения и загрузки хранилища во время игры существую методы SaveToBinary и LoadFromBinary, позволяющие сереализовать хранилище в бинарный массив.
События
При работе с хранилищем генерируются события OnKeyAdd, OnKeyRemove и OnKeysLoaded. Это может быть полезно в случае если какое либо игровое событие ожидает получения или удаления ключа. К примеру, активное задание ожидает получения ключа для завершения.
Подписки на события не сохраняются методами SaveToBinary и LoadFromBinary, каждый подписавшийся на событие объект должен сам следить за этим.
Отладка, StoryKeyWindow
Для упрощения отладки в редакторе присутствует окно StoryKeyWindow. Кнопка вызова окна находится в меню Window > Developer tools > Story Key.
В этом окне можно просмотреть выданные ключи, удалить или добавить новые а так же экспортировать все ключи в тестовый файл и загрузить их из него.