天天看點

Unity ECS (DOTS)<一> 概述

 一、 Unity 傳統開發模式(OOP)

       Unity 傳統開發模式(MonoBehavior)是面向對象的,使用GameObject + Component + Script 的方式去開發産品。這種研發模式的好處是顯而易見,門檻低上手快,即使項目人員流動比較大的情況下, 新人也能很快接手項目。但是其缺點也是很明顯的,代碼品質不高。首先GameObject上挂載的各類元件在記憶體上是分散的<緩存命中率低>; 其次資料備援, 當你隻需要對某個對象做單一操作時(如,旋轉、移動之類),它會加載所有元件上的資料内容給你, 當處理事務的數量級比較大的時候, 這種加載方式就會顯得比較浪費了。

Unity ECS (DOTS)<一> 概述

二、 Unity DOTS開發模式(DOP)

         DOTS,多線程式資料導向型技術棧。基于ECS,Jobs System、Burst技術的一種面向資料的開發模式,門檻高上手慢,新人幾乎無法接手項目。優點則是,資料(ComponentData)與行為(System)是分離的(減少大量系統間的耦合度),緩存命中率高,CPU使用效率高(多線程,SIMD),資料復原友善等。

Unity ECS (DOTS)<一> 概述

        在ECS系統中傳統元件Component被拆的更細碎了,如以前Transform中包含的位移、旋轉、縮放等被拆分成了Translation、Rotation、Scale。它們各自挂在自己的Entity上, 并有着自己System管理。進而達到每個System隻需要專心處理好自己的事務,隻關心自己要處理的資料。

        對ECS沒概念的小夥伴可以先看看下邊連接配接的内容

        大神連結:1.  風雲大佬的“淺談《守望先鋒》中的 ECS 構架”

                          2.  宣雨松大佬在UUG北京開發者活動上關于ECS的演講

                          3.  CodeMonkey關于ECS系列的教程

                          4.  UnityECS代碼案例