Unity内のアセット拡張
概要
Quantumアセットは、シミュレーションには関係ないUnity固有のデータ(UI用の色、テキスト、アイコンなど)を拡張できます。
Quantum 3の変更点
Quantum 3では、アセットの部分的な定義とDSLファイルからのインポートは不要になりました。
かわりに、AssetOject
を直接継承して、好きな情報を追加できます。
例
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にロードされます。詳細はResourcesとAddressablesをご覧ください。
エディター内のアクセス
Unityエディター内でパスを使用してアセットをロードするには、UnityEditor.AssetDatabase.LoadAssetAtPath<T>()
メソッドを使用します。
C#
CharacterSpecAsset characterSpecAsset = UnityEditor.AssetDatabase.LoadAssetAtPath<CharacterSpecAsset>(path);
Debug.Log(characterSpecAsset.DisplayName);
また、QuantumUnityDB.GetGlobalAssetEditorInstance
/QuantumUnityDB.TryGetGlobalAssetEditorInstance
メソッドを使用してアセットをロードすることもできます。
C#
CharacterSpec characterSpec = QuantumUnityDB.GetGlobalAssetEditorInstance<CharacterSpec>(guid);
Debug.Log(characterSpec.DisplayName);
Back to top