This document is about: QUANTUM 2
SWITCH TO

수정중인 페이지 입니다.

유니티용 에셋 확장

개요

Quantum 에셋은 UI에 대한 데이터(색상, 텍스트, 아이콘 등)와 같이 시뮬레이션과 관련이 없는 유니티별 데이터로 확장할 수 있습니다. 이 작업은 부분 클래스를 사용하여 수행됩니다.

예제

CharacterSpec 에셋을 예로 들어 보겠습니다. 유니티의 ScriptableObject 기반 래퍼인 CharacterSpecAsset은 확장해야 하는 유형입니다.

C#

public partial class CharacterSpecAsset {
  [Header("Unity")]
  public Sprtie Icon;
  public Color Color;
  public string DisplayName;
}
이러한 필드는 뷰(유니티)에서만 액세스할 수 있으며 시뮬레이션(Quantum)에서는 액세스하거나 사용할 수 없습니다.

새로 만든 부분 클래스는 CharacterSpecAsset의 원래 정의와 동일한 어셈블리에 추가해야 합니다. 기본적으로 모든 유니티 측 Quantum 코드는 PhotonQuantum 어셈블리에 속합니다.

부분 클래스가 올바른 어셈블리에 속하도록 하려면 다음 방법 중 하나를 사용하십시오:

  • Assets/Photon/Quantum/User 디렉토리에 클래스를 저장합니다.
  • PhotonQuantum 어셈블리를 가르키는 AssemblyDefinitionReference 에셋을 갖는 아무 디렉토리에 클래스를 저장합니다.
  • Assets/Photon/Quantum/PhotonQuantum.asmdef를 삭제합니다. 이렇게 하면 Quantum이 주 어셈블리의 일부가 됩니다. Quantum SDK를 업데이트할 때마다 이 단계를 반복해야 합니다.

런타임에 접근

런타임에 추가 필드에 접근하기 위해서는, UnityDB.FindAsset<T>() 메소드를 사용합니다.

C#

CharacterSpecAsset characterSpecAsset = UnityDB.FindAsset<CharacterSpecAsset>(guid);
Debug.Log(characterSpecAsset.DisplayName);

또는 코드 생성된 GetUnityAsset() 확장 메소드를 사용할 수 있습니다:

C#

CharacterSpec characterSpec = frame.FindAsset<CharacterSpec>(guid);
CharacterSpecAsset characterSpecAsset = characterSpec.GetUnityAsset();
Debug.Log(characterSpecAsset.DisplayName);

두 가지 접근 방식 모두 에셋이 Quantum's AssetDB에 로드됩니다. 여기서 설명하는 대로 적절한 방법을 사용하여 DB를 작성합니다: Resources, Addressables 및 에셋 번들.

편집시 접근

유니티 에디터에서 경로를 사용하여 에셋을 로드하기 위해서, UnityEditor.AssetDataBase.LoadAssetAtPath<T>() 메소드를 사용할 수 있습니다.

C#

CharacterSpecAsset characterSpecAsset = UnityEditor.AssetDatabase.LoadAssetAtPath<CharacterSpecAsset>(path);
Debug.Log(characterSpecAsset.DisplayName);

또는 UnityDB.FindAssetForInspector() 메소드를 통해 AssetGuid를 사용하여 에셋을 로드할 수 있고 결과를 올바른 유형으로 캐스팅합니다.

C#

CharacterSpecAsset characterSpecAsset = (CharacterSpecAsset)UnityDB.FindAssetForInspector(guid);
Debug.Log(characterSpecAsset.DisplayName);
Back to top