На платформе libGDX ashley ecs мы должны разделить большие object
на Components
. Я хочу видеть, что край SpriteComponent
(Sprite
еще большая object
) к TextureComponent
, SizeComponent
, PositionComponent
, OriginComponent
, RotationComponent
, ScaleComponent
(или TransformComponent
& SizeComponent
).libgdx ashley ecs framework - Компоненты малых объектов и компонент большого объекта
TextureComponent - @field: TextureRegion region
SizeComponent - @field: float width, float height
TransformComponent - @field: Vector2 position, Vector2 origin, Vector2 scale, float rotation
entity.add(texture);
entity.add(size);
entity.add(transform);
V.S
SpriteComponent - @field: Sprite sprite
entity.add(sprite);
or the combination of both
entity.add(texture);
entity.add(size);
entity.add(transform);
entity.add(sprite);
SpriteSystem - overrides the size and transform components
RenderingSystem - uses the texture, size, transform components to draw object
Вопрос вы должны использовать SpriteComponent
если в Texture
, Transform
& Size
Component
уже добавлен в Entity
Components
?
Я не уверен в своих SpriteSystem
, если это правильное поведение.
Итак, вы говорили, что использование большого объекта, такого как Sprite, не рекомендуется использовать в ECS? – ronscript
Все сводится к компромиссам. Вам необходимо, чтобы ваши системы были активированы по уважительной причине. Вы должны легко адаптировать логику своей игры. Иногда компоненты - это просто маркеры, которые вызывают функциональность, иногда они представляют собой большие жирные фрагменты кода (особенно для работы с игроком), и в этом случае вы имеете право разбить не столько сами компоненты, сколько системы. Вы не обязаны внедрять свои системы в уникальном классе. –