728x90
반응형
- 개요
이전까지는 애셋을 레벨에 배치하고 저장까지 완료해야 사용하지 않는 애셋을 제거하도록 구성하였다
따라서 위와 같은 구조를 개선하여 애셋을 레벨에 배치하면
자동으로 레벨의 변화를 판단하고 레벨을 저장한 후에 사용하지 않는 애셋을 제거하도록 구조를 변경한다
- C++ 사이드
1) CoreManager.build.cs 파일

에디터에서 레벨에 접근하고 조작할 수 있는 LevelEditor 모듈을 추가한다
2) CoreManager 모듈 - QuickAssetActions 클래스

기존의 GetTopLevelPackagePath 함수를 제거하고 2개의 함수를 새롭게 추가한다
- PrepareAssetEnvironment 함수 : 선택한 애셋들의 사용 여부를 판단하여 조작하는 함수
- SaveWorldIfDirty 함수 : 레벨의 변경 여부(Dirty)를 판단하여 레벨을 조작하는 함수

RemoveUnusedAssets 함수에서 기존의 로직 대신 PrepareAssetEnvironment 함수를 호출하도록 변경한다

PrepareAssetEnvironment 함수의 로직은 위와 같다
- 선택한 애셋들의 AssetData를 순회하면서 Package Path를 저장
- 저장된 Package Path를 FixUpRedirectors 함수에 넘겨주어 리디렉터를 수정
- 선택한 애셋들의 AssetData를 순회하면서 SaveAsset 함수를 호출하여 애셋들의 Package를 저장
- SaveWorldIfDirty 함수를 호출

SaveWorldIfDirty 함수의 로직은 위와 같다
- GEditor로부터 LevelEditorSubsystem을 가져와 저장
- GEditor로부터 World를 가져와 저장
- 가져온 World로부터 현재 Level을 가져옴
- 현재 Level의 Package를 가져와 저장
- 가져온 현재 Level의 Package가 변경(Dirty)되었다면 SaveCurrentLevel 함수를 호출하여 Level 저장
3) CoreManager 모듈 - CoreManager 클래스

2)와 동일하게 2개의 함수를 새롭게 추가한다

기존의 함수들에서 FixUpRedirectors 함수 대신 PrepareAssetEnvironment 함수를 호출하도록 수정한다

PrepareAssetEnvironment 함수의 로직은 위와 같다
- AssetRegistry 모듈을 가져와 선택한 폴더 안의 애셋들에 대한 AssetData를 저장
- FixUpRedirectors 함수를 호출하여 선택한 폴더 안의 애셋들을 대상으로 리디렉터를 수정
- 폴더 안의 애셋들에 대한 AssetData를 순회하면서 SaveAsset 함수를 호출하여 애셋 저장
- SaveWorldIfDirty 함수를 호출

SaveWorldIfDirty 함수의 로직은 2)와 동일하다
- 최종 실행 결과

728x90
반응형
'언리얼 엔진 > 언리얼 엔진 커스텀 에디터' 카테고리의 다른 글
| Slate Widget - 2) 언리얼 엔진의 스마트 포인터 (0) | 2026.02.12 |
|---|---|
| Slate Widget - 1) Slate Widget이란? (0) | 2026.02.12 |
| Content Browser 확장 - 최종) 애셋이 존재하지 않는 폴더 삭제 (0) | 2026.01.29 |
| Content Browser 확장 - 1) 폴더에 저장된 사용하지 않는 애셋 삭제 (0) | 2026.01.25 |
| AssetActionUtility 클래스 - 최종) 애셋 리디렉터 수정 + 사용하지 않는 애셋 삭제 (0) | 2026.01.23 |