- 개요
Content Browser의 기능을 확장하여 폴더를 선택하고 우클릭하여 사용하지 않는 애셋을 삭제하는 기능을 추가한다
절차는 다음과 같다
- 1) Content Browser에 관한 기능을 포함하는 ContentBrowser 모듈 로드
- 2) 로드한 모듈에 포함된 PathViewContextMenuExtenders 멤버변수에 접근
- 해당 멤버변수는 Content Browser의 기능에 대한 델리게이트를 모아놓은 TArray
- 3) 새로운 델리게이트를 생성하고 해당 멤버변수에 저장
- 4) 생성한 델리게이트에 원하는 함수를 바인드

Editor Preference - Display UI Extension Points 옵션을 설정하여
에디터에 포함된 UI의 이름이나 위치를 확인할 수 있다
해당 옵션을 설정하여 추가한 기능의 이름과 위치를 확인하도록 구성한다
- C++ 사이드
1) CoreManager.build.cs 파일

ContentBrowser 모듈을 추가하여 관련된 함수나 변수에 접근하여 사용할 수 있도록 설정한다
2) CoreManager 플러그인 - DebugHeader 클래스

DebugHeader 클래스에 namespace를 추가하고 멤버함수들에 static 키워드를 사용하여
함수의 소속을 명확히 설정하고 객체 생성없이 함수를 즉시 호출할 수 있도록 설정한다
3) CoreManager 플러그인 - QuickAssetActions 클래스

기존에 DebugHeader의 함수를 호출하는 코드를 위와 같이 namespace를 붙여서 호출하도록 수정한다
4) CoreManager 플러그인 - CoreManager 클래스

CoreManager 모듈 클래스를 위와 같이 수정한다
함수는 총 5개로 구성되어 있으며 각각 다음과 같다
- InitContentBrowserMenuExtention 함수 : 최초로 호출되어 Content Browser를 확장하는 함수
- CustomContentBrowserMenuExtender 함수 : 확장되어 추가된 Menu Entry의 위치를 설정하는 함수
- AddContentBrowserMenuEntry 함수 : 추가된 Menu Entry의 세부 설정을 처리하는 함수
- OnDeleteUnsuedAssetButtonClicked 함수 : 처리되는 세부 설정에서 기능을 수행하는 함수
- FixUpRedirectors 함수 : 기능을 수행하기 이전에 저장된 애셋들의 리디렉터를 수정하는 함수
FolderPathsSelected 멤버변수는 지정한 폴더의 경로를 저장하는 용도로 사용한다

StatrupModule 함수에서 InitContentBrowserMenuExtention 함수를 호출하도록 설정한다

InitContentBrowserMenuExtention 함수의 로직은 위와 같다
- ContentBrowser 모듈을 불러와 저장
- 저장한 모듈로부터 PathViewContextMenuExtenders 멤버변수에 접근
- CustomContentBrowserMenuExtender 함수가 바인드된 델리게이트를 추가

AddContentBrowserMenuEntry 함수의 로직은 위와 같다
- UI를 확장하기 위한 Extender 객체를 생성
- 생성한 Extender 객체를 설정 : 확장 지점 + 삽입 위치 + 단축키 및 명령 + 실제 UI가 그려지면서 호출할 델리게이트
- 이후 선택한 폴더의 경로를 멤버변수에 저장하고 객체를 반환

AddContentBrowserMenuEntry 함수의 로직은 위와 같다
- 기능의 이름 + 기능의 툴팁 + 기능의 아이콘 + 해당 기능을 눌러서 호출할 델리게이트를 설정

OnDeleteUnsuedAssetButtonClicked 함수의 로직은 위와 같다
- FixUpRedirectors 함수를 호출하여 선택한 폴더의 애셋들의 리디렉터를 정리
- 선택한 폴더의 애셋들을 순회하면서 다음의 로직을 진행
- FindPackageReferencersForAsset 함수를 호출하여 해당 애셋이 사용되는지 확인
- 사용하지 않는다면 저장
- DeleteAssets 함수를 호출하여 저장된 사용하지 않는 애셋들을 제거

FixUpRedirectors 함수의 로직은 위와 같다
- AssetRegistry 모듈을 불러와 GetAssets 함수를 호출하여 폴더안의 애셋들을 불러옴
- AssetTools 모듈을 불러와 FixupReference 함수를 호출하여 해당 애셋들의 리디렉터를 수정
- 최종 실행 결과


위 2개의 블루프린트는 현재 레벨에 배치되어 사용중이다

'언리얼 엔진 > 언리얼 엔진 커스텀 에디터' 카테고리의 다른 글
| AssetActionUtility 클래스 + Content Browser 기능 확장) 구조 개선 (0) | 2026.01.30 |
|---|---|
| Content Browser 확장 - 최종) 애셋이 존재하지 않는 폴더 삭제 (0) | 2026.01.29 |
| AssetActionUtility 클래스 - 최종) 애셋 리디렉터 수정 + 사용하지 않는 애셋 삭제 (0) | 2026.01.23 |
| AssetActionUtility 클래스 - 3) 커스텀 메세지 + 애셋 타입별 접두사 수식 (0) | 2026.01.22 |
| AssetActionUtility 클래스 - 2) 애셋 복제 (0) | 2026.01.22 |