0

我想创建一个非常简单的敌人类,它从组件而不是继承中获取属性。我猜现在属性只是健康。我需要一个非常简单的例子来开始。仍在学习组件模式,我仍然迷路。

任何帮助都会令人难以置信!

4

2 回答 2

4

似乎您想使用组合。在这种情况下,定义您的类,例如:

健康成分:

class Health
{
public:
    Health();
    // other attributes / methods defined here
};

技能组件:

class Skills
{
public:
    Skills();
    // other attributes / methods defined here
};

武器组件:

class Weapons
{
public:
    Weapons();
    // other attributes / methods defined here
};

Enemy 类然后由其他组件的组合定义:

#include "health.h"
#include "weapons.h"
#include "skills.h"
class Enemy
{
public:
    Enemy();

    Health itsHealth;
    Weapons itsWeapons;
    Skills itsSkills;
};

我想出的“示例”组件在单独的类中定义,如图所示。然后每个类都跟踪它自己的实例变量和方法。

然后,您的 Enemy 类构造函数确定在创建敌人对象时如何定义每个组件。您还可以查看类初始值设定项列表,以获取有关如何使用默认值设置这些组件的示例。

于 2013-11-11T14:31:30.110 回答
0

这一切都取决于您想如何去做,您是否想要一个 ECS 架构,您有实体,依赖于组件,以及更新实体和组件的系统。我通常会说每个组件包含:

1.一个id(无论是字符串还是int)

2.组件向量

3.一个父实体,如果为null,这是一个根

4.作为子实体的向量。

基本上每个组件或组件类型都会有系统。像图形将有一堆图像加载到缓冲区中显示,或者一个物理系统对世界内部的重力和运动的变化(delta)执行更新。

于 2015-09-20T22:48:00.287 回答