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