游戏引擎中ECS架构及内存布局

一.ECS

     E:Entity-游戏世界中的人,房子等实际物体,这些物体可能由不同的MetaMesh,ParticleSys组成

     C:Component-组成实际物体的MetaMesh,ParticleSys,也可以是一个实际物体

     S:System-游戏引擎,负责完成实际物体的初始化,内存管理,帧同步,线程同步等核心功能

二.ECS内存布局

     1.创建GameSystem,维护Entities列表

public class GameSystem
{
    public List<GameEntity> entities = new List<GameEntity>;
}

     2.创建GameSystem引擎回调接口,帧渲染回调,实例创建回调,物理检测回调等

public abstract class GameSystemCallback
{
     public virtual void OnEntityInit();

     public virtual void OnGameSystemTick();

     public virtual void OnEntityDeInit();
}


int main()
{
   while(true)
   {

       for(GameEntity entity: entities)
       {
          #FPS游戏帧同步回调
          GameEntityComponent scriptComponent = entity.getScript()
          scriptComponent.OnGameSystemTick();
       }
   }
}

     3.创建实际的Entity,可能是一个人

public class Agent: GameEntity
{
    public int age;

    public int health;

    public int height;
}

     4.创建对应Entity下的Component,人具备技能,人具备盔甲,人具备AI三种不同的Component

public SkillComponent : GameEntityComponent
{

   public override void OnFrameTick()
   {
       //释放技能按键,业务逻辑
   }
}

public AIComponent : GameEntityComponent
{

   public override void OnFrameTick()
   {
       //人物AI行为
   }
}

public ArmorComponent : GameEntityComponent
{

   public override void OnFrameTick()
   {
       //人物盔甲挂载和卸下
   }
}

     5.将三种不同的Component添加至Entity中,检测人是否具备了技能,盔甲等特性

Agent agent = new GameEntity();
agent.addComponent(skillComponent);
agent.addComponent(armorComponent);
agent.addComponent(aiComponent);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霸王奉先

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值