- Asset
- BP 등 컨텐츠 브라우저에 노출되는 대상의 총칭
- Object Path : /Game/MyFolder/BP_MyBP.BP_MyBP'
- Package Path : /Game/MyFolder/
- Asset Name : BP_MyBP
- Actor
- World에 배치되는 대상의 총칭
기본 세팅
기본 세팅
module의 build.cs파일 세팅
- Blutility 추가 ( AssetActionUtility.h 및 ActorActionUtility.h가 해당 모듈에 포함되어 있음 )
- PrivateIncludePaths.AddRange
- System.IO.Path.GetFullPath(Target.RelativeEnginePath) + "/Source/Editor/Blutility/Private"
- PublicDependencyModuleNames.AddRange
- "Blutility"
- PrivateIncludePaths.AddRange
- UFUNCTION(CallInEditor)
- AssetActionUtility 자식 클래스로 생성
- plugin폴더 / contents / 우클릭 → editor utility → editor utility blueprints 생성 → 만든 클래스 상속 → 재접속
- Editor UI Name 활성화 - editor preference - Display UI Extension Points
주요 레퍼런스 헤더
주요 레퍼런스 헤더
<FAssetData>
- Reflection 통해서 접근가능한 메타데이터 타입?
- GetClass()
- isA<UObject>
Paths.h
- Combine(<FString> a, <FString> b) : 경로문자열과 경로문자열을 합침
UEditorUtilityLibrary.h
- TArray<FAssetData> GetSelectedAssetData()
- <FName> ObjectPath
- <FName> PackagePath
- <FName> AssetName
UEditorAssetLibrary.h
- <bool> DuplicateAsset( {source path}, {target path} )
- <bool> SaveAsset( {target path}, dirty조건 여부 )
- <FString> FindPackageReferencersForAsset(에셋경로) : 해당 에셋에 reference가 걸린 대상들 리스트 반환
FMessageDialog
- Open( <EAppMsgType> 메시지 타입, 기타등등 )
FSlateNotificationManager::Get()
- AddNotification : 에디터 우측하단 메시지
ObjectTools
- DeleteAssets ( TArray<FString> )
FModuleManager
- <FContentBrowserModule> (static) LoadModuleChecked<FContentBrowserModule>(TEXT("name"))
FContentBrowserModule
- <TArray<FContentBrowserMenuExtender_SelectedPaths>> GetAllPathViewContextMenuExtenders();
- 해당 어레이에 델리게이트 집어넣으면 메뉴에 추가되는 듯?
Tips
팁
- 블루프린트는 UBlueprint를 상속
- EditorUtilityLibrary의 GetSelectedAsset은 <UObject*>를 반환 ( 언리얼 스트럭쳐 최상위 부모 )
- UObject
- GetClass()
- GetName()
- GetClass()
- FString
- StartWith()
- From~~()
특정 메뉴에 리스트 추가하기
IModuleInterface 상속
- virtual void StartupModule() override에서 delegate를 binding 하는 함수 실행
- 컨텐츠 브라우저 메뉴 ex
- FModuleManager::LoadModuleChecked<FContentBrowserModule>(TEXT("ContentBrowser"))
.GetAllPathViewContextMenuExtenders().Add(
FContentBrowserMenuExtender_SelectedPaths::CreateRaw( this, &함수명 )); - 즉, module를 통해 path view context menu array에 content browser menu 타입 델리게이트를 만들어서 추가해야 함 ( 출력되는 영역에 대한 정의 )
- 함수는 const TArray<FString>& 선택된 경로들을 파라미터로 받음
- 이 타입을 FMenuBuilder&를 parameter로 받으며, 해당 스트럭쳐에서 .AddMenuEntry함수를 통해 FExecuteAction 델리게이트를 쑤셔넣음 ( 수행에 대한 정의 )
- FModuleManager::LoadModuleChecked<FContentBrowserModule>(TEXT("ContentBrowser"))