UnityDots1.0解析之Archetype
當(dāng)前使用dots版本號(hào)為1.0.14。
Entity是一個(gè)8bit的id號(hào)。單純就是一個(gè)編號(hào)。
Component用來(lái)保存數(shù)據(jù)。托管型、非托管型等等一大堆,后面有機(jī)會(huì)專門寫文章解析。
不同類型不同數(shù)量的Component組成不同的Archetype,每種組合構(gòu)成一個(gè)唯一的Archetype。例如組件A,B組成原型A;組件A,C組成原型B。
由Archetype可以計(jì)算出具體的內(nèi)存分配,被稱為Chunk的塊,每一個(gè)Chunk固定16kbit。下圖舉例示意了Chunk的具體結(jié)構(gòu):

新增的Entity會(huì)加到Chunk末尾。
當(dāng)一個(gè)Chunk被塞滿就會(huì)開一個(gè)新的16k的Chunk。
當(dāng)刪除Chunk中的某一個(gè)Entity時(shí),會(huì)自動(dòng)將該Chunk最后一個(gè)Entity填充到被刪除的位置。
當(dāng)Chunk中最后一個(gè)Entity被刪除后,整個(gè)Chunk會(huì)被刪除。
當(dāng)Entity的Component發(fā)生改變時(shí),會(huì)將Entity轉(zhuǎn)移到對(duì)應(yīng)的Archetype Chunk中。
以上這些行為會(huì)造成性能開銷,被稱為Structural change。
標(biāo)簽: