언리얼 엔진 프로젝트에서 에셋에 메타데이터를 할당하여 나중에 사용해야 할 수도 있는 특정 에셋에 대한 정보를 기록할 수 있습니다. 이 메타데이터는 사용자 자신의 용도를 위해 자유롭게 정의할 수 있는 키-값 쌍의 집합입니다.
예를 들어 메타데이터에는 에셋 생성자의 이름, 프로젝트에서 에셋을 사용하려는 목적, 팀의 워크플로에서의 에셋의 상태(진행 중, 완료, 승인 등) 등의 정보가 포함될 수 있습니다.
메타데이터를 설정하면 이를 사용하여 '콘텐츠 브라우저(Content Browser)'에서 에셋을 필터링하거나 블루프린트 또는 언리얼 에디터에서 실행하는 Python 스크립트에서 에셋을 확인할 수 있습니다.
이 메타데이터는 프로젝트에서 에셋에 할당되기 때문에 런타임 게임플레이 코드에서 직접 액세스할 수는 없습니다. 메타데이터는 언리얼 에디터에서 에셋 관리 작업을 스크립팅하기 위한 것입니다.
타사 애플리케이션에서 생성한 메타데이터를 에셋과 함께 언리얼 에디터로 임포트할 수도 있습니다. FBX 임포트 프로세스를 통해 메타데이터를 언리얼 엔진으로 가져오는 방법에 대한 자세한 내용은 FBX 에셋 메타데이터 파이프라인을 참고하세요.
언리얼 에디터 UI에서 메타데이터 사용하기
현재는 언리얼 에디터 UI에서 메타데이터를 수정할 수 없지만 에셋에 할당된 메타데이터를 확인할 수 있고 메타데이터 키를 사용하여 '콘텐츠 브라우저'에 표시되는 에셋을 필터링할 수 있습니다.
에셋의 메타데이터 보기
에셋에 할당된 메타데이터를 보려면 '콘텐츠 브라우저'에서 에셋을 우클릭하고 에셋 액션(Asset Actions) > 메타데이터 표시(Show Metadata) 를 선택합니다.

에셋에 할당된 모든 키와 값의 목록을 확인할 수 있습니다.

콘텐츠 브라우저 필터링
'콘텐츠 브라우저'에서 특정 메타데이터 태그로 에셋을 필터링하려면 다음 단계를 따릅니다.
-
메인 메뉴에서 편집(Edit) > 프로젝트 세팅(Project Settings) 을 선택하여 프로젝트 세팅 창을 엽니다.
- 게임(Game) > 에셋 매니저(Asset Manager) 섹션을 선택하고 에셋 레지스트리(Asset Registry) > 에셋 레지스트리용 메타데이터 태그(Metadata Tags For Asset Registry) 세팅을 찾습니다.
에셋을 필터링하기 위해 사용하려는 키 이름을 이 목록에 추가합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
- '콘텐츠 브라우저'의 필터(Filters) 바에서 검색하려는 값 뒤에 나오는
=
오른쪽에 태그 이름을 입력합니다. 에셋 목록은 지정한 메타데이터 태그를 가지고 있으며 태그의 값이=
오른쪽에 입력한 값과 일치하는 에셋만 표시하도록 자동으로 필터링됩니다.
에셋 메타데이터로 작업하기
에디터 스크립팅 유틸리티(Editor Scripting Utilities) 플러그인을 설치하지 않은 경우 이를 설치해야 합니다. 자세한 내용은 에디터 자동화 및 스크립트 작성을 참고하세요.
에디터 스크립팅(Editor Scripting) > 메타데이터(Metadata) 카테고리에서 에셋 메타데이터를 관리하는 데 필요한 노드를 찾을 수 있습니다.
이 노드를 사용하려면 블루프린트 클래스가 PlacedEditorUtilityBase 클래스와 같이 에디터 전용 클래스에서 파생되어야 합니다. 자세한 내용은 블루프린트를 사용한 스크립팅 및 에디터 페이지를 참고하세요.
- 에셋의 메타데이터로 작업하려면 해당 에셋을 업로드해야 합니다. 에디터 스크립팅 > Load Asset 노드를 사용하여 업로드할 수 있습니다. 메타데이터 값을 설정하거나 제거하려는 경우에는 변경사항을 저장하기 위해 Save Asset 또는 Save Loaded Asset 같은 노드를 사용해야 합니다.
에셋에서 메타데이터 구하기
- 얻으려는 메타데이터 키의 이름을 알고 있으면 Get Metadata Tag 노드를 사용할 수 있습니다. 예를 들어 이 스크립트는 이름으로 단일 태그의 값을 얻고 이를 뷰포트에 출력합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
- 또는 Get Metadata Tag Values 노드를 사용하여 모든 메타데이터를 태그와 값의 쌍인 맵 으로 얻을 수 있습니다. 예를 들어 이 스크립트는 에셋에 대한 모든 메타데이터를 얻은 다음 뷰포트에 각 키와 값을 순서에 따라 작성합니다.
새 메타데이터 태그 설정하기
Set Metadata Tag 노드를 사용합니다. 예를 들면 다음과 같습니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
지정한 태그 이름이 에셋의 메타데이터에 없는 경우 해당 이름이 지정한 값에 추가됩니다. 에셋에 지정한 이름을 가진 태그가 있는 경우 태그의 값이 업데이트됩니다.
기존 메타데이터 제거하기
Remove Metadata Tag 노드를 사용하고 제거하려는 태그 이름을 제공합니다. 예를 들면 다음과 같습니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
에셋에서 모든 메타데이터 태그를 제거하려는 경우 이 노드를 루프로 호출할 수 있습니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
unreal.EditorAssetLibrary
클래스에서 메타데이터를 관리하는 데 필요한 함수를 찾을 수 있습니다.
- 에셋의 메타데이터로 작업하려면 해당 에셋을 업로드해야 합니다.
unreal.EditorAssetLibrary.load_asset()
함수를 사용하여 프로젝트 콘텐츠에서 파일 이름으로 에셋을 로드할 수 있습니다. 메타데이터 값을 설정하거나 제거하려는 경우에는 변경사항을 저장하기 위해unreal.EditorAssetLibrary.save_asset()
또는unreal.EditorAssetLibrary.save_loaded_asset()
등의 함수를 사용해야 합니다.
에셋에서 메타데이터 구하기
-
얻으려는 메타데이터 키의 이름을 알고 있으면
get_metadata_tag(asset, tag_name)
함수를 사용할 수 있습니다. 예를 들어 이 스크립트는 이름으로 단일 태그의 값을 얻고 이를 로그에 출력합니다.import unreal asset_name = "/Game/ProductViewer/SampleMesh/Gears/Transmission_part_10" tag_name = "CreatedBy" loaded_asset = unreal.EditorAssetLibrary.load_asset(asset_name) value = unreal.EditorAssetLibrary.get_metadata_tag(loaded_asset, tag_name) if not value is "": unreal.log("Value of tag " + tag_name + " for asset " + asset_name + ": " + value)
-
또는
get_metadata_tag_values(asset)
함수를 사용하여 에셋에 할당된 모든 메타데이터를 딕셔너리로 얻을 수 있습니다. 그런 다음 키와 값을 통해 루프할 수 있습니다. 예를 들어 이 스크립트는 에셋에 대한 모든 메타데이터를 얻은 다음 로그에 각 키와 각 값을 순서에 따라 작성합니다. 이 딕셔너리에 있는 키는 스트링이 아니라unreal.Name
오브젝트입니다. 내장 함수str()
을 사용하면 이 오브젝트를 스트링으로 변환할 수 있습니다.import unreal asset_name = "/Game/ProductViewer/SampleMesh/Gears/Transmission_part_10" loaded_asset = unreal.EditorAssetLibrary.load_asset(asset_name) all_metadata = unreal.EditorAssetLibrary.get_metadata_tag_values(loaded_asset) for tag_name, value in all_metadata.iteritems(): if not value is "": unreal.log("Value of tag " + str(tag_name) + " for asset " + asset_name + ": " + value)
새 메타데이터 태그 설정하기
set_metadata_tag(asset, tag_name, value)
함수를 사용합니다. 예를 들면 다음과 같습니다.
import unreal
asset_name = "/Game/ProductViewer/SampleMesh/Gears/Transmission_part_10"
tag_name = "CreatedBy"
value_to_set = "My Name"
loaded_asset = unreal.EditorAssetLibrary.load_asset(asset_name)
unreal.EditorAssetLibrary.set_metadata_tag(loaded_asset, tag_name, value_to_set)
unreal.EditorAssetLibrary.save_asset(asset_name)
지정한 태그 이름이 에셋의 메타데이터에 없는 경우 해당 이름이 지정한 값에 추가됩니다. 에셋에 지정한 이름을 가진 태그가 있는 경우 태그의 값이 업데이트됩니다.
기존 메타데이터 태그 제거하기
remove_metadata_tag(asset, tag_name)
함수를 사용하고 제거하려는 태그 이름을 제공합니다. 예를 들면 다음과 같습니다.
import unreal
asset_name = "/Game/ProductViewer/SampleMesh/Gears/Transmission_part_10"
tag_name = "CreatedBy"
loaded_asset = unreal.EditorAssetLibrary.load_asset(asset_name)
unreal.EditorAssetLibrary.remove_metadata_tag(loaded_asset, tag_name)
unreal.EditorAssetLibrary.save_asset(asset_name)
에셋에서 모든 메타데이터 태그를 제거하려는 경우 이 함수를 루프로 호출할 수 있습니다.
import unreal
asset_name = "/Game/ProductViewer/SampleMesh/Gears/Transmission_part_10"
tag_name = "CreatedBy"
loaded_asset = unreal.EditorAssetLibrary.load_asset(asset_name)
all_metadata = unreal.EditorAssetLibrary.get_metadata_tag_values(loaded_asset)
for tag_name in all_metadata:
unreal.EditorAssetLibrary.remove_metadata_tag(loaded_asset, tag_name)
unreal.EditorAssetLibrary.save_asset(asset_name)