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,正式項目中使用可能會有很多坑,工期趕得話不建議使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章