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.TryGetGlobalAssetEditorInstance
的QuantumUnityDB.GetGlobalAssetEditorInstance
方法加載資產。
C#
CharacterSpec characterSpec = QuantumUnityDB.GetGlobalAssetEditorInstance<CharacterSpec>(guid);
Debug.Log(characterSpec.DisplayName);
Back to top