This document is about: QUANTUM 2
SWITCH TO

Entity Prototypes

概述

為了協助由資料驅動的設計,Quantum 2.0引入 實體原型

一個 實體原型 是一個實體的被序列化的版本,其包含:

  • 組合(比如,它由哪些部件組成);以及,
  • 資料(比如,元件的屬性及它們的初始值)。

這允許資料及行為之間的一個乾淨的分離,同時讓設計師可以調校前者,而不需要程式設計師持續地編輯後者。

設定一個原型

實體原型可在Unity編輯器中被設定。

基礎

為了建立一個 實體原型,簡單地新增 實體原型 指令碼到任何遊戲物件。

entity prototype script on an empty gameobjet
基礎實體原型(空的遊戲物件+實體原型指令碼)。

實體原型 指令碼允許您針對最常使用的2D及3D元件,來設定及定義參數。

  • 轉換(針對2D,包含轉換2D垂直)
  • 物理碰撞器
  • 物理主體
  • 導航網格路徑尋找器
  • 導航網格轉向代理
  • 導航網格迴避代理

尊重針對與物理及導航網格相關的代理的相依性。 如需取得更多資訊,請閱讀它們各自的文檔。

自訂元件

可新增額外的元件到一個 實體原型,其透過:

  • 新增實體元件 下拉式清單;或是,
  • 常規的Unity 新增元件 按鍵,透過搜尋正確的 實體元件

關於集合的注意事項

元件中的動態集合,只 至少有一個項目在它們之中的情況下,被自動地分配。不然,集合將必須被手動分配。如需取得更多關於這個主題的資訊,請參見在DSL頁面上的動態集合輸入項目.

階層

在ECS中,實體/遊戲物件階層的概念並不存在。此實體原型不支援階層或巢狀。

雖然子原型並沒有直接被支援,您可以:

  1. 在場景中建立分離的原型,並且內嵌它們。
  2. 透過在一個元件中保有一個參照來連接它們。
  3. 手動地更新「子原型」的位置。

請注意: 沒有內嵌到場景中的原型,將必須遵循一個不同的工作流程,其中實體在程式碼中被建立及連接。

您可以在物件(檢視)中有階層,然而在實體(模擬)中的階層需要由您處理。

建立/具現化一個原型

當一個 實體原型 已經在Unity中被定義,有許多方法可以將其包含在模擬之中。

被內嵌於場景/地圖之中

如果 實體原型 作為一個Unity場景的一部分被建立,它將被內嵌到相對應的地圖資產。被內嵌的 實體原型 將在地圖時被載入,並透過它被內嵌的值來被具現化。

請注意: 如果一個場景的 實體原型 被編輯,或是其值被修改,地圖資料必須被重新內嵌。

在程式碼中

為了從一個 實體原型 建立一個新的實體,您需要遵循以下步驟:

  1. 建立一個遊戲物件的Unity預製件,其帶有 實體原型 指令碼。
  2. 將預製件放到Resources\DB之中。
entity prototype asset
實體原型預製件+巢狀實體原型資產。
=> 這將生成一個巢狀 *實體原型* **資產**。
  1. 重新整理Quantum資料庫Quantum -> Generate Asset Resources
  2. 實體原型 資產 路徑或GUID在您的模擬中可用。
entity prototype asset guid & path
實體原型資產視窗。
=> 為了複製路徑或GUID,點擊它們的相對應的`Edit`按鍵。
  1. 透過幀來調用Create(),並且發送如實體原型參照,或是它的一個執行個體:

C#

void CreateExampleEntity(Frame f){
    // using a reference
    var exampleEntity = f.Create(myPrototypeReference);

    // OR, getting an instance before, using the asset's path as a parameter, and then creating the entity
    var entityPrototype = f.FindAsset<EntityPrototype>("Resources/DB/Prefabs/Example|EntityPrototype");
    var exampleEntity = f.Create(entityPrototype);
}

注意事項

在場景中呈現的 實體原型 被內嵌到 地圖資產,同時被預製的 實體原型 是個別的 資產,其為Quantum資產資料庫的一部分。

實體檢視

在Unity中 實體檢視 對應到一個實體的視覺效果。 在由資料驅動的設計的精神中,一個 實體原型 可以包含其 檢視 元件,或指向一個分離的 實體檢視 資產。

自身

為了設定一個 實體原型 的檢視到自身,簡單地新增 實體檢視 元件到它。

entity prototype with entity view
附有「自身」檢視的實體原型。
當已經新增元件,*實體原型* 指令碼將列出 **自身** 作為 *檢視* 參數的值。這也將在同樣的預製件中建立一個巢狀的 *實體檢視* **資產**。
entity prototype asset and
實體原型資產及「自身」檢視資產。

從原型分離

為了設定及連接一個從 實體原型 資產分離的檢視:

  1. 新增 實體檢視 到您希望代表檢視的遊戲物件。
  2. 預製帶有 實體檢視 的遊戲物件。
  3. 將預製件放到Resources\DB之中,這將建立一個巢狀於預製件之中的 實體檢視 資產
entity prototype with entity view
實體原型資產及分離的實體檢視資產。
  1. 重新整理資料庫Quantum -> Generate Asset Resources
  2. 以新建立的 實體檢視資產實體原型 連接 檢視 欄位。這可以透過拖放或是Unity內容搜尋選單來完成。
linking an entity prototype with a separate entity view asset
以一個分離的實體檢視資產來連接一個實體原型。

重要事項

為了讓一個 實體檢視 在Unity中可見,場景必須有一個EntityViewUpdater指令碼。

Back to top