Я пытаюсь создать эффективную «систему сущностей» на C ++, я прочитал много блогов / статей / документации в Интернете, чтобы получить много информации, но у меня снова возникли некоторые вопросы.
Я нашел две интересные темы:
Для меня две системы выглядят очень похоже.
Итак, я нашел этот пример Адама Смита: https://stackoverflow.com/a/2021868
Мне нужна гибкая система, подобная этой:
// Abstract class
class Component
{
// data here
}
// exemple
class Car : public Component
{
// Data here
}
// Entity with components
class Entity
{
std::vector<Component*> components;
}
Итак, если моя сущность имеет следующие компоненты: Car, Transform, Sprite,
мой массив компонентов будет иметь линейные данные, такие как управляемая данными система?
Теперь у меня есть системы:
class System
{
virtual void init();
virtual void clear();
virtual void update();
std::unordered_map< const char*, Entity*> entities;
}
class RendererSystem : public System
{
// Methods's definition (init, clear, …).
void update()
{
for( entity, … )
{
Sprite* s = entity->getComponent('sprite');
...
}
}
}
Все эти точки выглядят «размытыми» в моей голове.
new
(если это указатель). Затем, как только вы выделите его, вам не нужно будет делать это снова, как только вы передадите ссылку на элемент вокругДругих решений пока нет …