ECS框架文件翻譯一 Entities

2021-09-23 07:49:49 字數 1459 閱讀 2492

entities 實體

實體是ecs(實體元件系統)體系結構的三個主要元素之一。它們代表遊戲或程式中的單個「物體」。乙個實體(e)既沒有行為也沒有資料,它只是將一系列相關聯的資料(**於compnents)串聯在一起。系統(systems)提供行為。元件( components)儲存資料。

實體本質上是乙個id。您可以將其視為乙個超級輕量級​​gameobject,預設情況下甚至沒有名稱。實體id是固定的,它們是儲存對另乙個元件或實體的引用的唯一穩定方式。

entitymanager 負責管理world中的所有實體。 entitymanager維護實體列表並組織與實體關聯的資料以獲得最佳效能。

雖然實體沒有型別,但實體依然進行分組,根據是使用與之相關聯的多個資料元件(c)的型別。在建立實體並向其新增元件時,entitymanager會跟蹤現有實體上元件的唯一組合。這種獨特的組合稱為entityarchetype (實體原型)。在向實體新增元件時,entitymanager會建立entityarchetype結構。您可以使用現有的entityarchetypes來建立符合該原型的新實體,也可以提前建立entityarchetype,後續再使用它來建立實體。

建立實體

建立實體的最簡單方法是使用unity編輯器。您可以設定放置在場景中的遊戲物件和要在執行時轉換為實體的預製件。若是要根據程式動態生成,您可以建立乙個實體spawning (生成)系統,用於在job中建立多個實體。最後,您可以使用entitymanager.createentity函式來建立實體。

使用entitymanager建立實體

使用 entitymanager.createentity函式之一來建立實體。實體將被建立在與entitymanager相同的world中。

您可以通過以下方式逐個建立實體:

您也可以一次建立多個實體:

新增和刪​​除元件

當實體建立之後,你還可以增加或者刪除元件,當你這麼做的時候,該實體的原型(entityarchetype)將發生變化,因為

entitymanager必須將修改後的資料(那些關聯的元件)移動到乙個新的記憶體內中,並將原先的元件陣列壓緊。

實體的更改將導致內部元件、原型等結構的更改,即新增或刪除元件的操作,將更改sharedcomponentdata(共享的元件資料,如前述的[c1、c2])的值,這些操作無法在job內部完成,包括銷毀實體操作。因為這些操作可能會使job正在處理的資料無效。然而,你可以新增entitycommandbuffer 命令,以在此job完成後,進行這些型別的更改。

entitymanager提供了從單個實體以及nativearray中的所有實體中刪除元件的功能。有關更多資訊,請參閱 components 。

實體遍歷

在所有元件匹配的實體間遍歷,是ecs體系結構的核心。請參閱 accessing entity data.

voltdb官方文件翻譯 一)

最近研究voltdb,發現網上的資料很少。但是官網的文件講述的還是挺清楚的。所以就把看後的觀點記錄下來,方便後來人,廢話不多說,進入正題。首先,voltdb是什麼。它是一款記憶體資料庫,號稱實現了acid和事務隔離,快速解決大資料量和大併發量的秒級相應。本人實際使用了一下感覺還是蠻好的。因為volt...

PureMVC 官方文件翻譯(一)

最近在學習puremvc框架,感覺最權威的還是閱讀官方文件,順便翻譯了下全當記筆記了。puremvc概覽 這篇文件他討論puremvc框架的類和介面,使用uml來闡述它們的角色 職責和協作。puremvc框架有乙個非常細小的目標一一就是幫助你把應用程式編碼之間的關聯分離成明確的三層 模型層,檢視層和...

MediaPlayer的一點文件翻譯

另外乙個開發者必須要多加小心的地方是medplayer的狀態管理。因為一些medplayer的方法開發者必須在mediaplayer合適的狀態下呼叫,否則很有可能丟擲異常或者未知的錯誤。在寫 的時候,永遠心裡想著mediaplayer的各種狀態變化,因為大部分的bug都是在某個狀態下呼叫了錯誤的方法...