java libgdx阿什利ecs框架-小对象组件与大型对象组件

lmyy7pcs  于 2023-04-28  发布在  Java
关注(0)|答案(1)|浏览(124)

在libGDX阿什利ecs框架中,我们需要将大型object拆分为Components。我想看看SpriteComponentSprite仍然是一个大的object)到TextureComponentSizeComponentPositionComponentOriginComponentRotationComponentScaleComponent(或TransformComponentSizeComponent)的边缘是什么。

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

问题如果TextureTransformSizeComponent已经添加为EntityComponents,是否需要使用SpriteComponent

我不确定我的SpriteSystem是否是正确的行为。

y53ybaqx

y53ybaqx1#

在我看来,像阿什利这样的实体组件系统的目标是让系统处理游戏实体的所有组件。假设您将SpriteComponent拆分为TextureComponentSizeComponentTransformComponent,您将实现TextureSystem还是SizeSystem?这些系统将遍历所有实体,如果它们有特定的组件,则在每帧执行一些逻辑。也许你的特定游戏会在一帧一帧的基础上改变大部分实体的大小或纹理,但对我来说,这是不太可能的,你的表现会受到这种设计的影响。阿什利和其他ECS中的示例给予了很好的示例,说明了组件可能是什么:输入、位置、速度、渲染。...现在最好还是坚持下去

相关问题