언리얼 엔진/언리얼 엔진 커스텀 에디터

코드를 통한 머티리얼 생성 - 2) 애셋을 검증하는 기능 추가

monstro 2026. 2. 27. 15:34
728x90
반응형

- 개요

이전에 만든 EditorUtilityWidget 클래스에 애셋을 검증하는 기능을 추가한다

추가하는 기능은 다음과 같다

  • 선택한 애셋들이 Texture2D 애셋인지 확인
  • 동일한 이름을 가진 머티리얼이 이미 존재하는지 확인

 

- C++ 사이드

1) CoreManager 모듈 - QuickMaterialCreationWidget 클래스

 

QuickMaterialCreationWidget 클래스를 위와 같이 수정한다

  • bCustomMaterialName 멤버변수 : EditAnywhere 속성과 BlueprintReadWrite 속성을 부여
    • 위젯 블루프린트에서 값을 변경
  • ProcessSelectedData 함수 : 선택한 애셋들이 Texture2D 애셋인지 확인하는 함수
  • CheckIsNameUsed 함수 :동일한 이름을 가진 머티리얼이 이미 존재하는지 확인하는 함수

 

 

ProcessSelectedData 함수의 로직은 위와 같다

SelectedDataToProccess 인자를 순회하면서 다음의 로직을 수행한다

  • 순회중인 AssetData를 가져와 SelectedAsset 변수에 저장
  • SelectedAsset을 Texture2D 변수로 캐스팅
    • 캐스팅에 실패하면 False 반환
  • 인자로 받은 OutSelectedTexturePackagePath에 순회중인 AssetData의 PackagePath를 저장
  • 머티리얼 이름을 따로 지정하지 않으면 Texture2D의 "T_" 접두사를 제거하고 머티리얼의 "M_" 접두사를 수식
    • 수식하여 수정한 결과물을 MaterialName 멤버변수에 저장
  • 순회 종료후에 True 반환

 

 

CheckIsNameUsed 함수의 로직은 위와 같다

인자로 받은 FolderPathToCheck를 ListAssets 함수에 넘겨주어 애셋의 DirectoryPath를 가져온다

이후 가져온 애셋의 DirectoryPath를 순회하면서 다음의 로직을 진행한다

  • 순회중인 DirectoryPath를 GetBaseFilename 함수에 넘겨주어 애셋의 이름 저장
  • 저장한 애셋의 이름을 MaterialNameToCheck 인자와 비교
    • 비교한 결과가 True라면 디버그 메세지를 띄우고 + True 반환
  • 순회 종료후에 False 반환

 

 

CreateMaterialFromSelectedTextures 함수를 위와 같이 수정한다

  • GetSelectedAssetData 함수를 호출하여 선택한 애셋들의 AssetData를 저장
  • 선택한 Texture2D 애셋들을 저장할 TArray + 선택한 애셋들의 폴더 경로를 저장할 FString 생성
  • ProcessSelectedData 함수에 인자를 넘겨주어 False가 반환되었다면 얼리 리턴
    • False 반환 : 선택한 애셋들이 전부 Texture2D 애셋이 아님을 의미
  • CheckIsNameUsed 함수에 인자를 넘겨주어 True가 반환되었다면 얼리 리턴
    • True 반환 : 동일한 이름을 가진 머티리얼 애셋이 이미 존재함을 의미
  • 이후 폴더 경로의 FString을 화면에 출력

 

- 최종 실행 결과

728x90
반응형