Unity2019 Dots初试

Posted _Captain

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity2019 Dots初试相关的知识,希望对你有一定的参考价值。

主要参考Unity Connect上面的文章,原文链接:

https://connect.unity.com/p/unityecs-yi

按照文章,是创建 100x100 的立方体,以噪声作为Y轴值,进行波浪动作。

测试环境

Unity 2019.4.2f1 (64-bit)
安装最新的Package

测试结果

原始组件模式:15-16fps

ECS+JobSystem:60-70fps

ECS+JobSystem+Burst:120-180fps

本文转自https://blog.csdn.net/cp790621656/article/details/107127880

ECS模式

ECS是一种设计思想,和Unity之前的Component设计模式一样。并不限定在Unity中,任何语言都可以实现ECS模式。

Unity的ECS并不仅仅实现这种模式,在这之后做了CPU缓存优化,提升了CPU缓存填充率,从而命中率提高。

另一方面,使用Struct替代Class,以及Collections扩展包中提供大量Native容器,减少GC。

JobSystem

如果只有ECS,那么并没有想象中的那么好,游戏仍然以单线程运行,现代移动CPU核心多以10计,一直都是一核有难,9核围观。

JoySystem 就是将复杂的运算,分布在不同的CPU核心中。

原始组件模式,在主线程Update更新Cube坐标,其他线程闲置:
开启JobSystem后,任务分配到多个CPU核心:
https://www.thisisgame.com.cn/

Burst编译

Burst编译器,将C#代码转为LLVM中间语言IR代码。然后由LLVM生成高度优化本机代码。

Burst编译器不支持C#中的数学操作,对此Unity提供了额外的Package Mathematics。

雨松在视频直播中提到的一个点是支持了CPU的SIMD指令,将数学计算进行打包。一条汇编指令可以执行4个数学运算,极大降低了CPU占用。所以可以看到开启Burst之后,CPU相较于之前的80%降低到60%。

在Profile中也可以直观看到,在一瞬间就完成了运算。

雨松的直播视频:

https://www.bilibili.com/video/av711159137/

测试项目下载

链接:https://pan.baidu.com/s/1jaYUVo1D2uIGc4vFpF0Lsw
提取码:4wj2

什么项目用Dots?

具有大量相同类型运算的项目,例如RTS、SLG、我的世界类型方块沙盒。

Dots这套解决方案,暂时只能对CPU进行优化,GPU方向期待Unity后续计划。

Burst目前还是Preview,正式项目中使用可能会有很多坑,工期赶得话不建议使用。

以上是关于Unity2019 Dots初试的主要内容,如果未能解决你的问题,请参考以下文章

Unity开源项目精选Entitas:Unity DOTS的先行者

Unity DOTS学习教程汇总

DOTS介绍+Unity DOTS-MAN小游戏项目实战

Unity项目技术方案Dots架构方案简介

Unity DOTS 中的 ECS

Unity Animation Instancing 官方解决方案初试