美文网首页
2018-10-26

2018-10-26

作者: silekey | 来源:发表于2018-10-26 22:20 被阅读0次

    Unity中使用ECS系统后的一点感想

    优点:

    • 容易写出质量高的代码, 因为核心的规则就一句话
      数据全放在Component, 函数全放在System里

    • 更容易搭建复杂系统

      • 容易处理多个系统间的关系
        oop或ec 系统对象内处理函数面向的是单个对象信息。
        而ecs中的system 面对处理的信息是单个或多个相关集合。这样就给需要对整体考虑的功能就非常方便。

      • 明确调用入口
        相对于oop或ec系统来说, 原来行为绑定在对象内. 有个很重要的问题是谁来调用, 还要为每个这样的对象找到一个调用的入口。
        而ECS系统就只要把Component添加到Entity就完成了,要简单不少。

    • 解决问题方便
      通常知道问题出在哪里后只要面对少量的系统代码就可以了, 按照我最近的体验, 就是解决BUG的时候,不太需要考虑到与其他系统之家的关联。按照以前写代码的习惯,还要考虑到这段代码会被什么系统调用。

    • 默认性能
      这也是Unity鼓吹的, 主要是在PureECS的时候会比较有效, 因为ECS特别在现代硬件中进行优化。
      不需要特别的性能优化,默认就可以得到很高的性能。

    缺点:

    • 阅读复杂系统比较困难
      若一个系统又多个System联合实现, 那么要通过代码看清关系会比较困难,解决方式是补充文档。

    • 不容易定位问题
      System之间交流经常使用Component来实现的,没有原来的事件或函数调用方式可以通过堆栈定位问题。

    • 对带有上下文的逻辑处理不是很友好
      比如说一个交易,要分好几个步骤, 上下是有关联的。 又比如AI。 解决方式是小范围的逻辑就使用状态机。
      复杂的逻辑可以考虑使用协程的方式来做。

    • 多个World 好像支持不是很好
      没看到对应的例子

    • Unity为ECS系统做了很多定制话的东西
      这样要用客户端与服务器逻辑通用就照成了障碍。

    相关文章

      网友评论

          本文标题:2018-10-26

          本文链接:https://www.haomeiwen.com/subject/rwtrtqtx.html