只有你足够强,别人才会和你讲道理。
文章: 280
浏览: 2,956,226
  • 博主:笨木头
  • 关注:Unity、Net Core、Blazor
  • 邮箱:musicvs@163.com
笨木头  2019-12-05 14:33     ECS入门     阅读(8878)     评论(20)
转载请注明,原文地址: http://www.benmutou.com/archives/2843
文章来源:笨木头与游戏开发
关于Unity的ECS,可能大家还有很多疑惑,是的,我也是。

但是,通过这12篇教程,大家多多少少对ECS是有了解的,在这个基础上,大家再去看官方手册,就会轻松很多。

当然,就这12篇教程所学到的东西,是完完全全不能用于实战的。

 

但是,没办法,我必须停止更新教程,因为,我自己还没有真正用ECS实战过,我也还有很多疑惑。

未来,如果有机会的话,再和大家分享进阶的教程。

这里稍微总结一下ECS的思维。

1.纯(Pure

要记住,ECS就是角色分明,组件就是组件,实体就是实体,不要混用。

组件就是存储一些字段;实体就是包含了很多组件,代表了一种实际存在的对象;系统就是负责处理各种逻辑。

2.并行

其实,ECS很多复杂的东西都是因为需要利用多线程导致的。

如果你不喜欢处理那么多复杂的事情,那么,最简单的使用方式就是j继承ComponentSystem:



这样的话,逻辑都在主线程里,非常简单。

但,如果想要享受ECS带来的性能提升,那就不得不考虑并行的问题。

比如,最需要记住的就是,对实体的新增、删除,对组件的新增、删除,都需要利用EntityCommandBuffer来延迟执行。

这也是我们要转变思维的重要一步,时刻记住——并行。

3.查询数据

ECS看起来,似乎一直都在查数据、改数据,所以,弄清楚EntityQuery的用法吧,很重要。

另外,IJobForEach、IJobChunk等各种Job,需要根据实际情况使用,如果你不知道该用哪个,那就先用IJobForEach。

4.System的执行顺序

某些时候,两个System的先后顺序很重要,所以别忘了这件事。

5.组件类型

组件分为普通组件、共享组件、系统状态组件、系统状态共享组件、Buffer组件,在刚开始的时候,选择使用普通组件即可,当你觉得普通组件无法满足要求的时候,你自然会关注到其他组件。

6.更多的疑惑

我个人还有一些疑惑,比如UI事件怎么和ECS配合、状态机等常用的模式在ECS中如何实现等。接下来我会去解决我的这些疑惑,如果有机会和精力的话,再和大家分享吧。

大家也不要就此止步,我的教程只是九牛一毛,还请各位继续学习其他教程。
20 条评论
  • nian 2023-11-07 10:19:42

    大佬,前12篇教程怎么都不见了啊
    0回复
    • 博主 笨木头 2023-11-09 08:36:58

      我这边看到都还在,是不是我博客卡了,没刷出来,你再看看:http://www.benmutou.com/archives/category/ECS%E5%85%A5%E9%97%A8
      0回复
  • LZX 2023-09-13 17:26:03

    大佬的教程是我目前看过的最通俗易懂的了!
    0回复
    • 博主 笨木头 2023-09-21 11:33:35

      哈哈,谢谢认可
      0回复
  • 晓声 2022-09-29 10:08:43

    亲,dots1.0发布了,要不要再出个攻略呢嘿嘿
    0回复
    • 博主 笨木头 2022-09-30 09:01:22

      我都想骂人,哈哈,这么多年才出。
      我们公司估计不会用Unity了,一方面是我的技术早就落后了,另一方面,我们毕竟不是游戏公司,用Unity的话,未来只有我能维护。
      目前考虑用Blazor,我们只是一些简单的小游戏、小玩意。
      0回复
      • LZX 2023-09-13 17:25:08

        从今天的公告来看(Unity表示超出阈值部分的营收和安装数收费),真是先见之明啊!!!
        0回复
        • 博主 笨木头 2023-09-21 11:35:03

          我也是万万没想到Unity会这么玩,虽然现在好像改规则了,但...这世界还是挺神奇
          0回复
  • 唐宇 2021-07-04 15:03:21

    终于看完了 对ecs有了点理解 熟能生巧 慢慢使用
    0回复
  • LPLaser 2020-09-06 18:04:28

    谢谢老板的教程 非常有帮助啊
    0回复
    • 博主 笨木头 2020-09-07 09:18:40

      有帮助就好~
      0回复
  • liu tiangang 2020-09-06 16:26:17

    看过楼主的Cocos教程,虽然没看完(狗头),但是找了几篇DOTS教程发现木头果然很笨,不然像我这样很笨的人怎么也会收获良多
    0回复
    • 博主 笨木头 2020-09-07 09:18:20

      哈哈哈,是的,我特别能体会什么都不懂的心情,所以写的教程会仔细一些,有些能一笔带过的知识,其实都是研究了好久的
      0回复
  • 绯の羅賽莉娅 2020-05-22 09:55:29

    终于有能让我看懂的教程了(狗头)一键三连
    0回复
  • 尼尔 2020-03-08 15:54:22

    很细致的分析,赞
    0回复
  • ghostking 2020-03-01 22:21:11

    非常好。得到很多启发。感谢
    0回复
  • sneaking 2019-12-19 18:24:17

    我觉得这个教程是入门里面讲的最好的, 希望博主继续写一个游戏实战的教程.
    0回复
    • 博主 笨木头 2019-12-20 08:04:12

      谢谢认可,实战教程的话,得我自己经历了一段时间实战后才有机会出了,目前公司还在等Project Tiny的正式版。
      0回复
      • WangTaL 2022-10-04 21:49:16

        最近也在踩坑ProjectTiny0.32来玩玩,功能是够用了,而且打出来的包很小,挺不错的。不过正式版估计是不用等了,最近出了DOTS1.0,也还是跟GameObject混合开发的,打出来的包会大很多。Tiny是构建在DOTS之上的,除非DOTS可以纯DOTS开发了,Tiny才可能出正式版,挺期待的。不过到时可以纯DOTS开发了,估计也不用Tiny这个包了
        0回复
        • 博主 笨木头 2022-10-05 18:17:14

          哎,这个Tiny实在是憋太久了。我很久没关注了,如果能不用Tiny包,又可以生成Html包,那也挺好的,之前一直觉得重新搞一套,太浪费Unity3D现有的功能了
          0回复
发表评论
粤ICP备16043700号

本博客基于 BlazorAnt Design Blazor 开发