В настоящее время я реструктурирую свой LibGDX-Projekt, чтобы он соответствовал ECS-структуре с использованием Ashley. На данный момент у меня следующая система-структура:Поделиться данными между системами в ECS (Ashley)
- InputSystem (ручки игрока-Input)
- PhysicSystem (относится скорость к объектам, делает обнаружение столкновений и перемещает их)
- CameraSystem (регулирует камеру в камера-фокус)
- RenderingSystem (трансформирует SpriteBatch с камерой-информацией и привлекает все юридическое лицо)
Теперь я знаю, что каждая система является су который содержит всю необходимую ему логику и исключает возможность усложнения. Но мне нужна камера в CameraSystem для ее настройки, мне нужно в RenderSystem применить преобразование камеры, и мне нужно это в InputSystem, чтобы увидеть, на что указывает мышь. Как вы решаете это с помощью ECS-подхода? Могут ли системы взаимодействовать друг с другом? Должен ли я использовать Singleton под названием «SharedData», где я отказываюсь от всего, что нужно для нескольких систем? Кажется мне немного уродливым.
Заранее спасибо :)
Обычно я использую vis-runtime для ECS в своей игре. В режиме ожидания одна система вводится в другую систему, чтобы можно было легко получить доступ к другой системе. По словам меня, вы можете поделиться CameraSystem с другой системой. – Aryan