本文转自Unity Connect博主 雨松MOMO
Unite2019哥本哈根学习笔记之Converting your game to DOTS
将传统开发的游戏模式转成DOTS的方式,DOTS全称(Data Oriented Tech Stack) 面向数据的技术堆栈
DOTS能干什么?大家看看下面发射这么密集的子弹,如果是传统GameObject的方式肯定会卡死,然而Dots却非常流畅。 可以在Github上下载这个学习工程 https://github.com/UnityTechnologies/AngryBots_ECS
DOTS是什么?
-
Job System :任务系统
-
Entity Component System(ECS) :实体组件系统
-
Burst Compiler :Burst编译器 ,也是LLVM编译器
-
Project Tiny :Unity基于以上3个构成的H5小游戏解决方案
需要注意的是以上任务系统、实体组件系统、Burst编译器各自都是独立的系统可以单独使用,它们的集合称之为DOTS.
为什么要在项目中使用DOTS?
传统面向对象模式下内存就像下图一样,杂乱无序的排放在内存中。当CPU需要读取某个数据时,就要先从这一堆杂乱无序的内中找到需要的内存,然后将它读取并且移动到L1缓存中。缓存的内存大小是固定的远比内存要小很多,拿进来一个内存到缓存中必然就要移除一个。游戏进行中需要读取的内存多了,如果大量的都无法从缓存中拿到,就要重走内存读取在放入L1缓存的流程,势必效率就很差。称之为Cache miss。
Entity Component System(ECS) :实体组件系统 ,做的事情就是将传统游戏对象杂乱无序的组件归类ÿ