Slate Tip
Style 찾기
SAssignNew(ComboButton, SComboButton)
.ButtonStyle( FEditorStyle::Get(), "PropertyEditor.AssetComboStyle" )
.ForegroundColor(FEditorStyle::GetColor("PropertyEditor.AssetName.ColorAndOpacity"))
위와 같은 Style 은 구글링해도 안나오고 다음과 같은 방법을 통해 찾아야한다.
- Window -> DeveloperTools -> Widget Reflector 를 켠다.
- Pick Hit-Testable Widgets 을 통해 원하는 스타일을 가진 위젯에 커서를 옮기고 Esc 를 누른다.
- WidgetName 이 Tree 에 밀리면 Filter 를 통해 적당한 곳을 Root 로 만들자.
- 의심되는 위젯에 대해서 옆에 Source Column 을 통해서 원하는 코드 위치로 갈 수 있다.
- 여기서 원하는 스타일을 찾아 긁어온다.
Asset Picker
TSharedRef<SWidget> SAssetPicker::OnGenerateAssetPicker()
{
FContentBrowserModule& ContentBrowserModule = FModuleManager::Get().LoadModuleChecked<FContentBrowserModule>(TEXT("ContentBrowser"));
FAssetPickerConfig AssetPickerConfig;
TArray<const UClass*> AllowedClasses = {...};
for(TArray<const UClass*>::TConstIterator iter = AllowedClasses.CreateConstIterator(); iter; ++iter)
AssetPickerConfig.Filter.ClassNames.Add((*iter)->GetFName());
AssetPickerConfig.OnAssetSelected = FOnAssetSelected::CreateSP(this, ...);
AssetPickerConfig.bAllowDragging = true;
AssetPickerConfig.bAllowNullSelection = true;
AssetPickerConfig.Filter.bRecursiveClasses = true;
AssetPickerConfig.InitialAssetViewType = EAssetViewType::List;
AssetPickerConfig.InitialAssetSelection = InitialAsset;
return SNew(SBox).WidthOverride(AssetPickerSize.X).HeightOverride(AssetPickerSize.Y)
[
SNew(SBorder).BorderImage(FEditorStyle::GetBrush("Menu.Background"))
[
ContentBrowserModule.Get().CreateAssetPicker(AssetPickerConfig)
]
];
}
위처럼 ContentBrowserModule
에서 Asset Picker 를 들고 올 수 있음.
UE4 는 ComboButton
의 OnGetMenuContent
를 위와 비슷한 함수를 연결시켜줌.
이때 주의사항은 처음에 알아서 원하는 어셋에 대해 초기화(및 OnAssetSelected
)를 안해주므로 직접 해줘야함.
댓글남기기