유니티용 에셋 확장
개요
Quantum 에셋은 UI에 대한 데이터(색상, 텍스트, 아이콘 등)와 같이 시뮬레이션과 관련이 없는 유니티별 데이터로 확장할 수 있습니다. 이 작업은 부분 클래스를 사용하여 수행됩니다.
예제
CharacterSpec
에셋을 예로 들어 보겠습니다. 유니티의 ScriptableObject
기반 래퍼인 CharacterSpecAsset
은 확장해야 하는 유형입니다.
C#
public partial class CharacterSpecAsset {
[Header("Unity")]
public Sprtie Icon;
public Color Color;
public string DisplayName;
}
새로 만든 부분 클래스는 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