UE – Slate 容纳下配置Object作为窗体内容

内容纲要

file
如何将名为“UPVPAlignSetting”的Config修饰符类列举出所有可配置的变量加入到Slate中呢?
如下,我们定义的Config修饰符类。

UCLASS(Config = Engine, DefaultConfig)
class PVPRENDER_API UPVPAlignSetting : public UObject
{
    GENERATED_BODY()
public:
    UPROPERTY(Config, BlueprintReadOnly, EditAnywhere, meta = (ContentDir, DisplayName = "Sequence路径"))
    FDirectoryPath AssetSequencePath;

    UPROPERTY(Config, BlueprintReadOnly, EditAnywhere, meta = (DisplayName = "外部视频路径"))
    FDirectoryPath InputVideoPath;
};

在Slate类的h文件中,先定义好细节预览和具体的配置文件类。

TSharedPtr<IDetailsView>DetailsView;
class UPVPAlignSetting* Setting;

在Slate类的Construct函数中,修改DetailsView变量,并设置Object为配置文件类。

void SPVPAlign::Construct(const FArguments& InArgs)
{
    //得到PropertyEditorModule模块
    auto& PropertyModule = FModuleManager::LoadModuleChecked<FPropertyEditorModule>("PropertyEditor");
    FDetailsViewArgs DetailsViewArgs;
    //如下可以配置你想要的参数
    //DetailViewArgs.XXX = XXX;

    DetailsView = PropertyModule.CreateDetailView(DetailsViewArgs);
    //给DetailsView设置Object
    Setting = GetMutableDefault<UPVPAlignSetting>();
    DetailsView->SetObject(Setting);
}

最后,直接将DetailsView.ToSharedRef()添加到Slate的窗体中。

ChildSlot
[
    SNew(SVerticalBox)
    +SVerticalBox::Slot()
    .AutoHeight()
    [
        DetailsView.ToSharedRef()
    ]
]

Related Posts

发表回复

同步Schの秘密防空洞