Unity AssetDatabase 클래스 가이드
소개
Unity의 AssetDatabase 클래스는 에셋 파이프라인을 커스터마이즈하고, 스크립트로 에셋을 액세스, 로드, 생성 및 조작할 수 있는 도구를 제공합니다. 이 기능은 에디터 클래스이므로 스탠드얼론 빌드에서는 사용할 수 없습니다.
에셋 작업
AssetDatabase를 사용하면 여러 가지 작업을 수행할 수 있습니다:
- 에셋 생성
- 에셋 임포트
- 에셋 삭제
- 에셋 복사
- 에셋 이동
- 에셋 로드 및 저장
- 에셋 데이터베이스 검색
에셋을 조작하기 위해 다양한 메서드를 제공합니다. 이 메서드들은 스크립팅 및 에디터 창 커스터마이징을 통해 사용됩니다.
에셋 오브젝트
Unity에서 "에셋"으로 간주되는 것은 프로젝트 창에 표시되는 것과는 다릅니다. 프로젝트의 Assets 폴더에 저장된 파일은 원본 에셋 파일이며, Unity는 이를 처리하여 UnityEngine.Object에서 파생된 직렬화된 C# 오브젝트를 생성합니다. 예를 들어, JPEG 파일은 Texture 클래스로 변환됩니다.
이러한 에셋은 일반적으로 사람이 읽을 수 없지만, AssetDatabase 메서드를 통해 접근할 수 있습니다.
.meta 파일
에셋을 임포트하면 Unity는 .meta 파일을 생성합니다. 이 파일은 원본 에셋의 임포트 설정과 GUID를 포함합니다. 이러한 GUID는 에셋 데이터베이스와의 연결을 유지하는데 사용됩니다.
주 에셋 및 서브 에셋
모든 에셋 파일 내에는 주 에셋이라는 개념이 있습니다. Unity는 단일 에셋이 포함된 파일의 주 에셋을 그 단일 에셋으로 정의합니다. 여러 개의 직렬화된 객체가 포함된 경우, 주 에셋은 파일에 추가된 첫 번째 에셋이 됩니다.
예를 들어, FBX 에셋 파일 내의 머티리얼과 메시도 서브 에셋으로 간주됩니다. 아래의 스크립트는 이러한 서브 에셋의 수를 검사하는 방법을 보여줍니다.
using UnityEngine;
using UnityEditor;
public class Example : MonoBehaviour
{
[MenuItem("AssetDatabase/InspectAssets")]
private static void InspectAssets()
{
Object[] data = AssetDatabase.LoadAllAssetsAtPath("Assets/Space Frigate.fbx");
Debug.Log(data.Length + " Assets");
foreach (Object o in data)
{
Debug.Log(o);
}
}
}
이 스크립트를 실행하면, "Space Frigate" 파일에 포함된 6개의 에셋이 출력됩니다.
에셋 임포트 순서
AssetDatabase 클래스를 사용할 때는 Unity의 임포트 프로세스 순서가 중요합니다. 아래의 순서를 기억하세요:
- 스크립트 에셋 임포트
- 스크립트 컴파일
- 모든 기타 에셋 임포트
위 단계에서 스크립트가 가장 먼저 임포트되고 컴파일된 후, 나머지 에셋이 임포트됩니다. 임포트 시기에 따라 코드의 결과가 달라질 수 있으므로 주의가 필요합니다.
마무리
이 문서에서는 Unity의 AssetDatabase 클래스에 대한 기본 정보와 사용 방법을 소개했습니다. 이 클래스를 활용하여 에셋 워크플로를 개선하고 스크립트로 다양한 작업을 자동화해 보세요.
에셋 데이터베이스에 대한 추가적인 정보가 필요하다면 Unity 스크립팅 API 문서를 참조하시기 바랍니다.