This document is about: QUANTUM 2
SWITCH TO

This page is a work in progress and could be pending updates.

Extending Assets for Unity

概述

Quantum資產可透過Unity特定的與模擬無關的資料(比如針對使用者介面的資料,如顏色、文字、圖示等等)來被延伸。使用 部分類別 來完成這點。

實例

讓我們使用CharacterSpec資產作為實例。其在Unity中基於ScriptableObject的包裝稱為CharacterSpecAsset,並且是需要被延伸的類型。

C#

public partial class CharacterSpecAsset {
  [Header("Unity")]
  public Sprtie Icon;
  public Color Color;
  public string DisplayName;
}
這些欄位只能在檢視(Unity)中存取,並且在模擬(Quantum)中無法被存取及使用。

新建立的部分類別需要被新增到與CharacterSpecAsset的原始定義的相同的組件。預設下,所有Unity側的Quantum程式碼屬於PhotonQuantum組件。

為了確保部分類別屬於正確的組件,請使用以下其中一種方法:

  • Assets/Photon/Quantum/User目錄中儲存類別。
  • 在任何有一個指向PhotonQuantum組件的 組件定義參照 資產的目錄上儲存類別。
  • 刪除Assets/Photon/Quantum/PhotonQuantum.asmdef。這將使Quantum成為主組件的一部分。請注意,需要在各個Quantum SDK更新之後重複這個步驟。

在運行階段存取

為了在運行階段存取額外的欄位,請使用UnityDB.FindAsset<T>()方法。

C#

CharacterSpecAsset characterSpecAsset = UnityDB.FindAsset<CharacterSpecAsset>(guid);
Debug.Log(characterSpecAsset.DisplayName);

或者是,使用程式碼生成的GetUnityAsset()延伸方法:

C#

CharacterSpec characterSpec = frame.FindAsset<CharacterSpec>(guid);
CharacterSpecAsset characterSpecAsset = characterSpec.GetUnityAsset();
Debug.Log(characterSpecAsset.DisplayName);

兩種方法將導致資產透過適合的方法被載入到Quantum的資產DB,如同此處所述: 資源、可定址及資產套件

在編輯時存取

為了在Unity編輯器中使用資產的路徑來載入資產,可使用UnityEditor.AssetDataBase.LoadAssetAtPath<T>()方法。

C#

CharacterSpecAsset characterSpecAsset = UnityEditor.AssetDatabase.LoadAssetAtPath<CharacterSpecAsset>(path);
Debug.Log(characterSpecAsset.DisplayName);

或者是,透過UnityDB.FindAssetForInspector()方法以使用資產的AssetGuid來載入資產,並且投放結果到正確的類型。

C#

CharacterSpecAsset characterSpecAsset = (CharacterSpecAsset)UnityDB.FindAssetForInspector(guid);
Debug.Log(characterSpecAsset.DisplayName);
Back to top