Я работаю над созданием очень простого 2D-игрового движка, и сейчас я переделываю свои сущности, чтобы они работали как система Unity. Я занимаюсь исследованием того, как работает шаблон проектирования Entity-Component-System (ECS), и начинаю понимать его лучше.
Насколько я понимаю, составная часть в ECS хранит только данные и не может ничего делать, кроме как сохранять эти данные. Эти компоненты затем используются системы, которые используются для чтения и управления своими данными.
Это привело меня к вопросу: являются ли скрипты MonoBehaviour, прикрепленные к GameObject в Unity, технически системами, а не компонентами, как они называются в редакторе Unity?
Если я ошибаюсь, думаю, мне было бы полезно проанализировать настоящие реализации ECS. Я кодирую на Java, поэтому, если у кого-то есть примеры системы ECS, реализованной на Java или C#, это было бы здорово, поскольку большинство примеров, которые я видел, были на C++, который мне немного сложнее понять. Спасибо!




Unity не работает строго через ECS, несмотря на использование термина «Компонент». Компонент Unity в форме MonoBehaviour может иметь как данные, так и системную логику. В будущих версиях Unity будет внедрять модель ECS..
Если вы хотите использовать текущие версии Unity (2018.1 и ниже) и строго придерживаться методологии ECS, я бы посоветовал изучить Entitas и их плагин Unity. Вы также можете структурировать свой код, ресурсы и сцены в соответствии с принципами ECS, но Entitas очень эффективен и решает за вас множество проблем.