Есть ли хороший способ создать четную очередь с произвольными аргументами? - PullRequest
0 голосов
/ 07 апреля 2020

Я работаю над пошаговой стратегической игрой, использующей Unreal Engine 4. Большинство игровых логи c происходит в виде манипулирующих массивов, абстрагированных от сложных классов Unreal Engine, которые показываются игроку (таких как классы Actor, содержащий сетки, эффекты и т. д. c.).

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

Это произойдет мгновенно, но я бы хотел поставить в очередь одновременно два события, происходящих последовательно. Сначала сложный объект-единица будет перемещаться по заданному пути в игровом мире, прежде чем воспроизводить анимацию атаки и изменять текстуру индикатора здоровья me sh над целевой единицей.

Моя главная проблема с реализацией такого Очередь событий состоит в том, что игра потребует большого количества таких событий, многие из которых нуждаются в совершенно разных аргументах. Могут быть события перемещения пути, для которых может потребоваться массив векторов в качестве аргумента, или события для анимации, для которых потребуется ссылка на скелет me sh et c.

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

...