This document is about: QUANTUM 3
SWITCH TO

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