實體組件系統

什麽是實體-組件-系統?

Entity-Component-System(ECS)是一種架構模式。這種模式在遊戲應用開發中被廣泛使用。ECS遵循組成大於繼承的原則,它提供了更好的靈活性,並幫助你識別實體,遊戲場景中的所有對象都被視為一個實體。

ECS編程是一種編寫代碼的方法,默認提供高性能。

這個系統由三個術語組成。

1.實體

2.組成部分

3.系統

讓我們詳細地學習這個概念:

在這個實體-組件系統的教程中,你將學習:

什麽是實體-組件-系統?

什麽是實體?

什麽是組件?

什麽是系統?

組成

ECS的優勢

使用ECS的劣勢

實體組件系統實例

ECS中的資料流。

什麽是實體?

實體是一個獨特的對象,代表模擬空間中的一個行為者。它沒有實際的資料或行為。這個組件給了一個實體它的資料。它通常是一個支點或字典。

例如,如果我們正在模擬一個遊戲的宇宙Minecraft,遊戲宇宙中所有可見的、有形的’東西’像都算在實體中。

什麽是組件?

实体组件系统_实体组件系统介绍_深渊号角的博客-CSDN博客

一個元素是賦予一個實體的單一行為。元素的名稱最好能傳達出該實體將表現出什麽行為。然而,組件本身沒有任何行為。它們是附著在實體上的可重復使用的模塊。組件提供外觀、行為和功能。

所有的邏輯都是用組件實現的,這有助於你通過混合和配置組件來定義不同類型的對象。

什麽是系統?

一個系統將叠代許多組件來執行低級別的

功能,如渲染圖形、執行物理學

計算或尋路。它為組件類提供全局範圍、管理和服務。

然而,系統不是可有可無的,但我們可以用它來分離邏輯和資料。它還可以幫助你處理邏輯組件,充當資料容器。

實例

重力(速度)–它幫助你在重力作用下加快速度

它把速度加到位置上

根據人工智能代理設置一個機器人控制的實體的輸入。

Render (Position, Sprite) – 繪制精靈。

玩家控制(Input Player)幫助你根據一個控制器來設置玩家控制的實體的輸入。

構成

一個組合是一個元素,你可以附加更多的組件來增加額外的外觀、行為或功能。你也可以更新組件的值來配置實體。

ECS的優勢

以下是在編程中使用ECS的優勢。

你可以創建更短、更不復雜的代碼。

非常靈活的Emergent行為。

它為3D和VR開發提供了一個架構。

使得非技術人員可以通過行為進行腳本編寫。

它幫助你劃分你的單體類。

易於拒絕和組成。

一個簡單的單元測試和嘲弄的選擇。

它允許你在復雜性方面建立一個VR應用程式。

在運行時用模擬的組件替代組件。

它可以幫助你擴展新的功能。

ECS是一種友好的並行處理和多線程的方法。

幫助你將資料與作用於它的函數分開

通過與可重復使用的部分混合,在定義對象時提供更好的靈活性。

它提供了一個使用解耦、封裝、模塊化、可重用性方法的簡潔設計。

使用ECS的缺點

Unity ECS 01 核心概念| 码农家园

這裏,是使用ECS的一些缺點

不像其他模式(如MVC)那樣有具體的定義。

難以正確應用,容易誤用 好的組件需要更多的設計思考

ECS需要編寫許多小的系統,這些系統在潛在的巨大數量的實體上叠代,這就產生了編寫非常低效的代碼的風險

大多數人甚至沒有聽說過這種模式。

實體組件系統實例

讓我們看一下兔子的例子。

看到這些組件周圍的虛線框。這就是兔子的實體–只不過是一個組件的容器。你也可以將實體定義為組件的任何子集的聚合。

你可以看到上面給出的圖片。這是兔子實體之一–只不過是一個組件的容器。你可以將實體定義為任何組件子集的聚合,比如Carrot。

ECS中的資料流。

ECS模型中的系統行為是指從一個狀態到另一個狀態的變化。

讓我們用這個例子來理解。

行為。”一只坐在樹上的兔子由於重力作用而掉下來”。

如何實現上述行為?

你可以用大於0的Z值來實現,隨著時間的推移,Z值會減少到0。

行為。”生物的年齡”。

讓我們看看如何實現這一行為?

你可以使生物成分有年齡值,並隨時間增加。

摘要:

實體-組件-系統(ECS)是一種架構模式。

實體是一個獨特的對象,代表模擬空間中的一個行為者。

一個組件是賦予一個實體的單一行為。

一個系統會叠代許多組件來執行低級別的功能,如渲染圖形、執行物理計算或尋路。

一個組件是一個元素,你可以附加更多的組件來增加額外的外觀、行為或功能。

通過使用ECS模式,你可以創建更短、更少的代碼。

它不像其他模式(如MVC)那樣被具體化。

ECS模式的系統行為是從一個狀態變化到另一個狀態。

 

留下评论