【发布时间】:2013-03-29 19:08:25
【问题描述】:
我刚刚开始为横向卷轴游戏开发实体组件系统。
我对 C++ 很陌生,但我已经阅读了很多教程,并决定最好的方法是拥有一个包含组件向量的实体类。然后会有一个基础组件类实际上组件作为子类。
Entity.h:
#ifndef _ENTITY_H
#define _ENTITY_H
#include "header.h"
class Entity
{
public:
Entity();
~Entity();
// Vector which stores all added components
vector<Component*> Components;
// Add component method
void AddComponent(Component* component);
};
#endif
Entity.cpp:
#include "header.h"
#include "Component.h"
#include "Entity.h"
Entity::Entity(){}
Entity::~Entity(){}
void Entity::AddComponent(Component* component)
{
Components.push_back(component);
}
组件.h:
#ifndef _COMPONENT_H
#define _COMPONENT_H
#include "header.h"
class Component
{
public:
// Forward declaration
class Entity;
Component();
~Component();
void Connect(Entity* entity) {}
string Name;
};
// Position component
class Position: public Component{
public:
int x, y;
};
// Display component
class Display: public Component{
public:
sf::Sprite baseSprite; };
#endif
组件.cpp:
#include "header.h"
#include "Component.h"
Component::Component(){}
Component::~Component(){}
现在要添加一个新组件,我会这样做:
Entity* new_component;
new_component = new Entity;
new_component->AddComponent(new Position);
new_component->AddComponent(new Display);
问题是,我不知道如何在添加组件后再次实际访问它。
例如,我希望能够访问 Position 的 x 和 y 值。但是当我尝试像这样访问列表中的组件时:
Components[i]->...
我只是想出了基础组件类的属性。
任何帮助将不胜感激。
【问题讨论】:
标签: c++ components system entities subclass