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
}
これらのフィールドは、View(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.GetGlobalAssetEditorInstance
または QuantumUnityDB.TryGetGlobalAssetEditorInstance
メソッドのいずれかを使用してアセットをロードすることができます。
C#
CharacterSpec characterSpec = QuantumUnityDB.GetGlobalAssetEditorInstance<CharacterSpec>(guid);
Debug.Log(characterSpec.DisplayName);
Back to top