libgdx ashley ecs框架 - 小对象组件与大对象组件

时间:2016-07-15 05:33:03

标签: java libgdx amazon-ecs

在libGDX ashley ecs框架中,我们需要将大object拆分为Components。我想看看SpriteComponentSprite仍然很大object)到TextureComponentSizeComponentPositionComponent,{ {1}},OriginComponentRotationComponent(或ScaleComponent& TransformComponent)。

SizeComponent

问题如果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是否是正确行为。

1 个答案:

答案 0 :(得分:1)

我认为,实体组件系统(如Ashley)的目标是让系统处理游戏实体的所有组件。假设您将SpriteComponent分成TextureComponentSizeComponentTransformComponent,您会实施TextureSystem还是SizeSystem?这些系统将迭代所有实体,如果它们具有特定组件,则每帧执行一些逻辑。也许你的特定游戏会逐帧改变大多数实体的大小或纹理,但对我来说,它不太可能,你的表现会受到这种设计的影响。 Ashley和其他ECS中展示的例子给出了一个很好的例子,说明组件可能是什么:输入,位置,速度,渲染......目前可能做的好事就是坚持下去。