Unity 革命性技术DOST入门一使用介绍

作者介绍:铸梦xy。IT公司技术合伙人,IT高级讲师,资深Unity架构师,铸梦之路系列课程创始人。

Unity DOTS入门介绍

1.什么是DOTS?

DOTS是Data-Oriented-Tech-Stack,官方中文翻译是:多线程式数据导向型技术堆栈

那么光听名字是很复杂的,不过我们可以直接理解 面向数据 ,那么在平常我们开发的时候,都是面向对象的,就比如GameObje,Object等,他们都是一个对象,那面向数据到底是个什么呢?

可以理解为我们的对象,都变成了一个个的数据。

其实就是我们在使用DOTS技术开发的时候,已经不存在对象了,我们操作的完全都是数据,就比如:Position、scale等,他们都可以用float3或者vector3这些数据结构来代表,唯一一个像对象,或者物体的就是我们的 Entity(实体) ,之所以理解为实体,是因为他是由多个数据组件组成的的一个载体,并且在我们的 Entity 世界中是完全存在的,看的到摸得着的,所以他被称之为实体。

DOST由以下三大核心成员组成:

Entity Component System

Job System

Burst compiler

  • Entity Component System 简称为ECS(实体组件系统),是一个代码框架,我们只需遵循该框架代码的编写方式,即可写出高性能的代码
  • Job System 其实就是官方提供的,能以并行的方式在多核CPU上运行游戏代码的的方法,我们也可以理解为多线程管理系统,我们可以通过JobSystem让我们需要大量计算的程序,以并行的方式,放入多个子线程中进行计算,这样能大大提升为我们的计算效率,其实也就是提升性能!
  • Burst 编译器 他能通过编译本地代码,极大提高代码的运行效率 10-1000倍不等,就比如本来需要200多毫秒才能计算完的东西,我们在使用了Burst 之后,会缩短到几毫秒,当我们在加入Jobsystem进行并行计算的时候,时间会缩短到0.xxx(零点几)毫秒,这种时间消耗基本上可以忽略不计数 。在我的 DOST入门三 JobSysten系统 中也进行过了实践。

其实Job System和ECS和Burst是三种不同的概念,他们相对独立存在,均可以分开始使用。但当它们三者一起使用的时候,会发挥出最大的优势。

而同时使用这三种技术,就是我们的 DOTS 技术。

2.DOTS的误区

误区一:DOTS必须同三者一起使用。

误区二:DOTS只能用来做大型游戏和大量怪物的游戏

可能大家会觉得用DOTS必须要用于大规模的集群模拟才能有较大的提升,因为之前大多数的分享,都是去演示的大规模集群模拟的性能的提升,可能会给大家带来这样的一个错觉,就是DOTS只能用于大规模群模拟游戏。

那么首先,这是一个误点,

如果说我们需要使用JobSystem,其实它跟ECS没有太大的关系,你可以在ECS里面用,也可以不在ECS里面用,就是只要是我们项目需要并行计算的地方都可以使用。
Burst也一样,它也不需要配合ECS使用,不需要跟并行计算捆绑使用,它的作用仅仅是对于一些复杂的计算密集的东西去进行编译器优化,来达到性能提升。

所以说只要是计算密集型的东西,都可以使用Burst,同步方法也是可以的。

误区三:在使用DOTS中,所有东西都要用ECS去编写

关于ECS,一个比较大的误解,大家可能大家会觉得用ECS之后,所有东西都可以用ECS来写,就会想UI的业务逻辑怎么用ECS实现。其实大可不必,并不是说用ECS,所有东西全部都要用ECS来做,而是大家可以根据项目需求选择其中适合那部分来用ECS去写,剩下的部分还是使用传统的面向对象的方式去写,没有任何问题,只要用代码稍微结合一下就可以了。

3.关于DOTS

  • DOTS分为三个组件:ECS、JobSystem、Burst 三个组件可相互独立使用,并非必须捆绑使用

  • JobSystem无需配合ECS使用,各种需要大量或并行计算的地方都可以使用

  • Burst同样无需配合ECS使用,也并不需要跟并行计算捆绑使用,计算密集的同步方法也可以使用

  • 使用ECS不代表整个项目必须全用ECS来编写,可根据项目需求将ECS和传统面对对象方式组合使用

以上误区经验取自于ILRuntime作者林若峰分享的DOTS使用技术文章https://unity.cn/projects/china-unity-tech-week_linruofeng

4.DOTS的使用介绍

演示版本 2019.4.18f1

1.首先我们需要创建一个新的Project

2.打开Package Manager(菜单:Window > Package Manager)

3.点击Advanced按钮,打开Show preview packages选项

4.找到Entities 点击右下角Install
在这里插入图片描述

Entities 导入之后 也会把以下packages添加到项目中:

  • Entities
  • Burst
  • Jobs
  • Mathematics
  • Collections

如下图:
在这里插入图片描述

除此之外我们还需要导入一些依赖库 这个库能够帮助我们把物体渲染到屏幕上

  • Hybrid.Renderer

导入完成之后我们的菜单栏是否有DOST 和Jobs 如果正常则说明我们导入成功

否则请检查工程是否有报错,或者Unity版本是否低于Unity2018
在这里插入图片描述
导入成功后我们就可以开心的编写代码了

DOTS入门视屏教程

下一篇:Unity 革命性技术DOST入门之 ECS的使用

文章来自于铸梦老师,铸梦之路系列课程。
想了解更多框架、帧同步技术、UGUI优化相关技术可在企鹅kt搜索 铸梦xy。

  • 10
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

铸梦xy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值