This document is about: QUANTUM 3
SWITCH TO

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