ECS 笔记

system

  • 任何两个system不应该有重复逻辑
  • 任何两个system都应该可以同时运行
  • 系统应该具有依赖关系和执行顺序,应该类似于unityshader的queue,分为几个大的区间。
  • 系统不应该知道entity是什么(player monster stone),否则非常容易写成面向对象。

compnent

  • 不应该存在标识性组件,每个组件都应该存在数据

例子

  • 真实类型 player monster 都可以attack,持有hpitem,player可以使用hpitem回复,
    那么,
    • 设计组件 hp attackpoint haveitem canuseitem
    • 设计系统
      • attacksystem
        • hp
        • attackpoint
      • helthsystem
        • hp
        • canuseitem
      • deathdrop
        • hp
        • haveitem
    • 设计实体 实际上不需要明确知道 player monster
      • player enity
        • hp
        • attackpoint
        • haveitem
        • canuseitem
      • monster enity
        • hp
        • attackpoint
        • haveitem