我想创建一个非常简单的敌人类,它从组件而不是继承中获取属性。我猜现在属性只是健康。我需要一个非常简单的例子来开始。仍在学习组件模式,我仍然迷路。
任何帮助都会令人难以置信!
我想创建一个非常简单的敌人类,它从组件而不是继承中获取属性。我猜现在属性只是健康。我需要一个非常简单的例子来开始。仍在学习组件模式,我仍然迷路。
任何帮助都会令人难以置信!
似乎您想使用组合。在这种情况下,定义您的类,例如:
健康成分:
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 类构造函数确定在创建敌人对象时如何定义每个组件。您还可以查看类初始值设定项列表,以获取有关如何使用默认值设置这些组件的示例。
这一切都取决于您想如何去做,您是否想要一个 ECS 架构,您有实体,依赖于组件,以及更新实体和组件的系统。我通常会说每个组件包含:
1.一个id(无论是字符串还是int)
2.组件向量
3.一个父实体,如果为null,这是一个根
4.作为子实体的向量。
基本上每个组件或组件类型都会有系统。像图形将有一堆图像加载到缓冲区中显示,或者一个物理系统对世界内部的重力和运动的变化(delta)执行更新。