一、 Unity 傳統開發模式(OOP)
Unity 傳統開發模式(MonoBehavior)是面向對象的,使用GameObject + Component + Script 的方式去開發産品。這種研發模式的好處是顯而易見,門檻低上手快,即使項目人員流動比較大的情況下, 新人也能很快接手項目。但是其缺點也是很明顯的,代碼品質不高。首先GameObject上挂載的各類元件在記憶體上是分散的<緩存命中率低>; 其次資料備援, 當你隻需要對某個對象做單一操作時(如,旋轉、移動之類),它會加載所有元件上的資料内容給你, 當處理事務的數量級比較大的時候, 這種加載方式就會顯得比較浪費了。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL9UkeNVTQ6pVdGdkYwZ0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL1kTOwEDM0cTM1EjMxAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
二、 Unity DOTS開發模式(DOP)
DOTS,多線程式資料導向型技術棧。基于ECS,Jobs System、Burst技術的一種面向資料的開發模式,門檻高上手慢,新人幾乎無法接手項目。優點則是,資料(ComponentData)與行為(System)是分離的(減少大量系統間的耦合度),緩存命中率高,CPU使用效率高(多線程,SIMD),資料復原友善等。
在ECS系統中傳統元件Component被拆的更細碎了,如以前Transform中包含的位移、旋轉、縮放等被拆分成了Translation、Rotation、Scale。它們各自挂在自己的Entity上, 并有着自己System管理。進而達到每個System隻需要專心處理好自己的事務,隻關心自己要處理的資料。
對ECS沒概念的小夥伴可以先看看下邊連接配接的内容
大神連結:1. 風雲大佬的“淺談《守望先鋒》中的 ECS 構架”
2. 宣雨松大佬在UUG北京開發者活動上關于ECS的演講
3. CodeMonkey關于ECS系列的教程
4. UnityECS代碼案例