Unity2019 Dots初试

荒凉一梦 提交于 2020-10-05 06:31:37

主要参考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,正式项目中使用可能会有很多坑,工期赶得话不建议使用。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!