ECS的核心概念,關(guān)于ecs使用規(guī)范正確的是-ESG跨境

ECS的核心概念,關(guān)于ecs使用規(guī)范正確的是

來(lái)源網(wǎng)絡(luò)
來(lái)源網(wǎng)絡(luò)
2022-04-28
點(diǎn)贊icon 0
查看icon 759

ECS的核心概念,關(guān)于ecs使用規(guī)范正確的是ECS的核心概念ECS架構(gòu)的核心是數(shù)據(jù),這也是Unity將這項(xiàng)技術(shù)命名為stack DOTS的原因。系統(tǒng)讀取實(shí)體上方組件的數(shù)據(jù)流并處理數(shù)據(jù)。在這里,實(shí)體實(shí)際上更像一個(gè)索引,它不包含任何數(shù)據(jù)或邏輯。EC由三部分組成:實(shí)體、組件和行為。見下圖:在此圖中,系統(tǒng)讀取多個(gè)實(shí)體的平移和旋......

ECS的核心概念,關(guān)于ecs使用規(guī)范正確的是




ECS的核心概念

ECS架構(gòu)的核心是數(shù)據(jù),這也是Unity將這項(xiàng)技術(shù)命名為stack DOTS的原因。系統(tǒng)讀取實(shí)體上方組件的數(shù)據(jù)流并處理數(shù)據(jù)。在這里,實(shí)體實(shí)際上更像一個(gè)索引,它不包含任何數(shù)據(jù)或邏輯。

EC由三部分組成:實(shí)體、組件和行為。見下圖:

在此圖中,系統(tǒng)讀取多個(gè)實(shí)體的平移和旋轉(zhuǎn)組件,然后在計(jì)算和處理后將結(jié)果更新到LocalToWorld組件。

如圖所示,實(shí)體A和B仍然有渲染器組件,但C沒(méi)有。但是,這不會(huì)影響系統(tǒng)的計(jì)算邏輯,因?yàn)檫@個(gè)系統(tǒng)不關(guān)心渲染器組件。

也可以寫一個(gè)需要處理渲染器組件的系統(tǒng),讓系統(tǒng)忽略實(shí)體c,也可以寫一個(gè)排除包含渲染器組件的實(shí)體的系統(tǒng),讓系統(tǒng)忽略實(shí)體A和實(shí)體b。

以下是ECS中一些重要的核心概念:

原型原型

多個(gè)組件的組合稱為原型。

例如,3D對(duì)象可以包含用于變換的組件,包括移動(dòng)、旋轉(zhuǎn)和渲染。每個(gè)3D對(duì)象對(duì)應(yīng)一個(gè)實(shí)體,但它們都有相同的組件,因此ECS會(huì)將它們歸類為一種原型。

上圖中,實(shí)體A和實(shí)體B的原型都是M,實(shí)體C的原型是n。

您還可以通過(guò)在運(yùn)行時(shí)添加或刪除組件來(lái)更改實(shí)體的原型。例如,如果實(shí)體B的渲染器組件被移除,則實(shí)體B的原型將變成n。

內(nèi)存塊

為什么先說(shuō)原型的概念?因?yàn)閷?shí)體的原型是什么決定了ECS將實(shí)體的組件即數(shù)據(jù)存儲(chǔ)在哪里。Ec以塊為單位分配內(nèi)存,每個(gè)塊由一個(gè)原型塊對(duì)象表示。

一個(gè)塊只包含一個(gè)原型,原型可以包含多個(gè)實(shí)體的數(shù)據(jù)。如果一個(gè)塊的內(nèi)存已滿,ECS將分配一個(gè)新的塊來(lái)存儲(chǔ)新實(shí)體的組件。

如果修改了實(shí)體的組件,就相當(dāng)于修改了實(shí)體的原型。此時(shí),ECS會(huì)將實(shí)體的組件數(shù)據(jù)移動(dòng)到另一個(gè)塊。

原型和內(nèi)存塊的關(guān)系是一對(duì)多的關(guān)系。這意味著,如果您想要查詢一組給定組件類型的所有實(shí)體,您只需要在這些原型中進(jìn)行搜索。這將比在所有實(shí)體中搜索高效得多。

ECS在存儲(chǔ)實(shí)體到內(nèi)存塊中沒(méi)有特殊的順序。當(dāng)一個(gè)實(shí)體被創(chuàng)建或者一個(gè)實(shí)體的原型發(fā)生變化時(shí),ECS會(huì)把它放到對(duì)應(yīng)原型中第一個(gè)有空間的內(nèi)存塊中。塊中的數(shù)據(jù)將緊密排列。如果要將一個(gè)實(shí)體移出當(dāng)前原型的內(nèi)存塊,此時(shí)會(huì)有一個(gè)空位,ECS會(huì)將這個(gè)內(nèi)存塊的最后一個(gè)實(shí)體數(shù)據(jù)移到這個(gè)空位上。

注意:原型中共享組件的數(shù)據(jù)(后面會(huì)詳細(xì)描述)也會(huì)影響實(shí)體將存儲(chǔ)在哪個(gè)內(nèi)存塊中。同一內(nèi)存塊中所有實(shí)體的共享組件中的數(shù)據(jù)值是相同的。如果修改共享組件中的數(shù)據(jù),實(shí)體將被移動(dòng)到另一個(gè)塊中,這有點(diǎn)類似于修改實(shí)體的原型。

將共享組件的實(shí)體劃分到一個(gè)內(nèi)存塊中將提高處理它們的速度。例如,Hybird Renderer定義了RenderMesh組件來(lái)實(shí)現(xiàn)這一目標(biāo)。

實(shí)體查詢

系統(tǒng)在什么基礎(chǔ)上決定處理哪些實(shí)體?這將使用稱為實(shí)體查詢的東西。實(shí)體查詢首先需要一些組件類型,然后根據(jù)你傳入的組件類型組合,在包含這些組件的原型中查詢符合要求的實(shí)體。查詢時(shí)可以指定以下三種類型:

All必須包含所有組件類型。

任何必須在任何中包含至少一個(gè)組件類型。

None中不能包含任何組件類型。

實(shí)體查詢的結(jié)果將返回滿足查詢要求的所有內(nèi)存塊。您可以使用IJobChunk遍歷所有組件。(IJobChunk后面會(huì)講到。)

作業(yè)作業(yè)

如前所述,ECS只有在與Job一起使用時(shí)才能發(fā)揮多線程的威力。ECS提供了包含實(shí)體的SystemBase類。ForEach方法,還包含IJobChunk的Schedule()和ScheduleParallel()方法,可以處理子線程中的數(shù)據(jù)。實(shí)體。ForEach是最簡(jiǎn)單的方法,只需幾行代碼就可以實(shí)現(xiàn)。IJobChunk可以用來(lái)處理更復(fù)雜的情況。

ECS將根據(jù)系統(tǒng)的順序在主線程中調(diào)度作業(yè)。當(dāng)調(diào)度作業(yè)時(shí),ECS將跟蹤哪些作業(yè)正在讀取和寫入哪些組件。需要讀權(quán)限的作業(yè)需要等到上一個(gè)具有寫權(quán)限的作業(yè)完成執(zhí)行,反之亦然。作業(yè)調(diào)度器將使用作業(yè)相關(guān)性來(lái)決定哪些作業(yè)可以并行,哪些作業(yè)必須串行。

系統(tǒng)的組織

歐共體通過(guò)世界和集團(tuán)組織系統(tǒng)。默認(rèn)情況下,ECS將使用一些預(yù)定義的組創(chuàng)建一個(gè)默認(rèn)世界。它將找到項(xiàng)目中的所有系統(tǒng),實(shí)例化它們,并將它們添加到預(yù)定義的組中。

您可以在同一組中指定系統(tǒng)更新的執(zhí)行順序。組也是一個(gè)系統(tǒng),所以您可以將一個(gè)組添加到另一個(gè)組中。如果不指定順序,系統(tǒng)的執(zhí)行順序?qū)⑹遣淮_定的,它不會(huì)遵循它們被創(chuàng)建的順序。但是,同一組中的所有系統(tǒng)將在下一組中的系統(tǒng)之前執(zhí)行。

系統(tǒng)的更新是在主線程中執(zhí)行的,但是您可以使用Job將工作分配給子線程。

ECS世界的視覺創(chuàng)作(創(chuàng)作)

在Unity中,沒(méi)有辦法直接在視覺上創(chuàng)建DOTS世界。不過(guò)可以先用GameOjbect和MonoBehaviour創(chuàng)建,然后通過(guò)轉(zhuǎn)換系統(tǒng)把GameObject轉(zhuǎn)換成實(shí)體和組件。我們以后再談這個(gè)。

來(lái)源:Unity官方平臺(tái)

原文:https://mp.weixin.qq.com/s/Tvtqz51Np7vWeYwKcQtHdQ


文章推薦
Cloudflare是針對(duì)站點(diǎn)安全性和性能的終極解決方案,國(guó)內(nèi)使用cloudflare有效果嗎
Facebook新號(hào)養(yǎng)號(hào)細(xì)節(jié)一覽!,facebook新號(hào)養(yǎng)號(hào)怎么用
F5 CIO直通車  從多云到跨云
Facebook商務(wù)管理平臺(tái)BM創(chuàng)建和設(shè)置,facebook商務(wù)管理平臺(tái)怎么設(shè)置


特別聲明:以上文章內(nèi)容僅代表作者本人觀點(diǎn),不代表ESG跨境電商觀點(diǎn)或立場(chǎng)。如有關(guān)于作品內(nèi)容、版權(quán)或其它問(wèn)題請(qǐng)于作品發(fā)表后的30日內(nèi)與ESG跨境電商聯(lián)系。

搜索 放大鏡
韓國(guó)平臺(tái)交流群
加入
韓國(guó)平臺(tái)交流群
掃碼進(jìn)群
歐洲多平臺(tái)交流群
加入
歐洲多平臺(tái)交流群
掃碼進(jìn)群
美國(guó)賣家交流群
加入
美國(guó)賣家交流群
掃碼進(jìn)群
ESG跨境專屬福利分享群
加入
ESG跨境專屬福利分享群
掃碼進(jìn)群
拉美電商交流群
加入
拉美電商交流群
掃碼進(jìn)群
亞馬遜跨境增長(zhǎng)交流群
加入
亞馬遜跨境增長(zhǎng)交流群
掃碼進(jìn)群
亞馬遜跨境增長(zhǎng)交流群
加入
亞馬遜跨境增長(zhǎng)交流群
掃碼進(jìn)群
拉美電商交流群
加入
拉美電商交流群
掃碼進(jìn)群
ESG獨(dú)家招商-PHH GROUP賣家交流群
加入
ESG獨(dú)家招商-PHH GROUP賣家交流群
掃碼進(jìn)群
《TikTok官方運(yùn)營(yíng)干貨合集》
《TikTok綜合運(yùn)營(yíng)手冊(cè)》
《TikTok短視頻運(yùn)營(yíng)手冊(cè)》
《TikTok直播運(yùn)營(yíng)手冊(cè)》
《TikTok全球趨勢(shì)報(bào)告》
《韓國(guó)節(jié)日營(yíng)銷指南》
《開店大全-全球合集》
《開店大全-主流平臺(tái)篇》
《開店大全-東南亞篇》
《CD平臺(tái)自注冊(cè)指南》
通過(guò)ESG入駐平臺(tái),您將解鎖
綠色通道,更高的入駐成功率
專業(yè)1v1客戶經(jīng)理服務(wù)
運(yùn)營(yíng)實(shí)操指導(dǎo)
運(yùn)營(yíng)提效資源福利
平臺(tái)官方專屬優(yōu)惠

立即登記,定期獲得更多資訊

訂閱
聯(lián)系顧問(wèn)

平臺(tái)顧問(wèn)

平臺(tái)顧問(wèn) 平臺(tái)顧問(wèn)

微信掃一掃
馬上聯(lián)系在線顧問(wèn)

icon icon

小程序

微信小程序

ESG跨境小程序
手機(jī)入駐更便捷

icon icon

返回頂部

【免費(fèi)領(lǐng)取】全球跨境電商運(yùn)營(yíng)干貨 關(guān)閉
進(jìn)行中
進(jìn)行中
【活動(dòng)報(bào)名】2024年歐洲多藍(lán)海平臺(tái)招商沙龍
官方親臨,拆解phh group/eMAG/worten三個(gè)平臺(tái)商機(jī)
立即報(bào)名
進(jìn)行中
進(jìn)行中
TikTok運(yùn)營(yíng)必備干貨包
包含8個(gè)TikTok最新運(yùn)營(yíng)指南(市場(chǎng)趨勢(shì)、運(yùn)營(yíng)手冊(cè)、節(jié)日攻略等),官方出品,專業(yè)全面!
免費(fèi)領(lǐng)取
進(jìn)行中
進(jìn)行中
韓國(guó)電商節(jié)日營(yíng)銷指南
10+韓國(guó)電商重要營(yíng)銷節(jié)點(diǎn)詳細(xì)解讀;2024各節(jié)日熱度選品助力引爆訂單增長(zhǎng);8大節(jié)日營(yíng)銷技巧輕松撬動(dòng)大促流量密碼。
免費(fèi)領(lǐng)取
進(jìn)行中
進(jìn)行中
全球平臺(tái)詳解——全球合集
涵括全球100+個(gè)電商平臺(tái)的核心信息,包括平臺(tái)精煉簡(jiǎn)介、競(jìng)爭(zhēng)優(yōu)勢(shì)、熱銷品類、入駐要求以及入駐須知等關(guān)鍵內(nèi)容。
立即領(lǐng)取
進(jìn)行中
進(jìn)行中
全球平臺(tái)詳解——主流平臺(tái)篇
火爆全球的跨境電商平臺(tái)合集,平臺(tái)優(yōu)勢(shì)、開店選品、入駐條件盡在掌握
立即領(lǐng)取
進(jìn)行中
進(jìn)行中
全球平臺(tái)詳解——拉美篇
涵蓋9大熱門拉美電商平臺(tái),成熟的市場(chǎng)是跨境賣家的熱門選擇!
立即領(lǐng)取
進(jìn)行中
進(jìn)行中
全球平臺(tái)詳解——日韓篇
涵蓋10+日韓電商平臺(tái),入駐條件一看就懂,優(yōu)勢(shì)熱銷品應(yīng)有盡有
立即領(lǐng)取
進(jìn)行中
進(jìn)行中
全球平臺(tái)詳解——?dú)W洲篇
涵蓋20+歐洲電商平臺(tái),詳細(xì)解讀優(yōu)勢(shì)、入駐條件、熱銷品等
立即領(lǐng)取