Эквивалентны ли Unity "MonoBehaviour Components" системам из шаблона проектирования Entity-Component-System?

Я работаю над созданием очень простого 2D-игрового движка, и сейчас я переделываю свои сущности, чтобы они работали как система Unity. Я занимаюсь исследованием того, как работает шаблон проектирования Entity-Component-System (ECS), и начинаю понимать его лучше.

Насколько я понимаю, составная часть в ECS хранит только данные и не может ничего делать, кроме как сохранять эти данные. Эти компоненты затем используются системы, которые используются для чтения и управления своими данными.

Это привело меня к вопросу: являются ли скрипты MonoBehaviour, прикрепленные к GameObject в Unity, технически системами, а не компонентами, как они называются в редакторе Unity?

Если я ошибаюсь, думаю, мне было бы полезно проанализировать настоящие реализации ECS. Я кодирую на Java, поэтому, если у кого-то есть примеры системы ECS, реализованной на Java или C#, это было бы здорово, поскольку большинство примеров, которые я видел, были на C++, который мне немного сложнее понять. Спасибо!

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
557
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

Другие вопросы по теме