This document is about: QUANTUM 3
SWITCH TO

Extending Assets for Unity

概述

Quantum 資產可以擴展包含 Unity 專用的數據,這些數據與模擬無關,例如用於 UI 的數據(顏色、文字、圖標等)。

3.0 版本的變更

在 Quantum 3 中,您不再需要將資產定義為部分或在 DSL 文件中導入它。

取而代之的是,您應該直接從AssetObject派生並添加所需的資訊。

範例

CharacterSpec資產為例:

C#

public class CharacterSpec : AssetObject {
#if QUANTUM_UNITY
  [Header("Unity")]
  public Sprite Icon;
  public Color Color;
  public string DisplayName;
#endif
}
這些字段應僅在視圖(Unity)中訪問,且絕對不應在模擬(Quantum)中訪問或使用。為了確保這一點,建議將任何僅限 Unity 的引用(聲音、圖標等)包裝在 #if QUANTUM_UNITY 區塊中。

運行時訪問

要在運行時訪問這些額外字段,可以使用QuantumUnityDB.GetGlobalAsset方法的任何重載:

C#

CharacterSpec characterSpec = QuantumUnityDB.GetGlobalAsset(assetRef);
Debug.Log(characterSpec.DisplayName);

或者,也可以使用QuantumUnityDB.TryGetGlobalAsset

C#

if (QuantumUnityDB.TryGetGlobalAsset(assetPath, out CharacterSpec characterSpec)) {
  Debug.Log(characterSpec.DisplayName);
}

這兩種方法都會將資產加載到 Quantum 的 AssetDB 中,使用的適當方法在此處討論:資源與可尋址

編輯時訪問

在 Unity 編輯器中,可以使用UnityEditor.AssetDataBase.LoadAssetAtPath<T>()方法通過路徑加載資產。

C#

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

或者,也可以使用QuantumUnityDB.TryGetGlobalAssetEditorInstanceQuantumUnityDB.GetGlobalAssetEditorInstance方法加載資產。

C#

CharacterSpec characterSpec = QuantumUnityDB.GetGlobalAssetEditorInstance<CharacterSpec>(guid);
Debug.Log(characterSpec.DisplayName);
Back to top