(二)Slate构建编辑器之PropertyEditor

PropertyEditor的作用是对UObject进行自动布局,减少手动布局的工作量。需要在模块中引用"PropertyEditor"

效果图:

3.代码

构建UObject类 MyDetailObject.h

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "MyDetailObject.generated.h"

/**
 * 
 */
USTRUCT()
struct FMyVector {
	GENERATED_USTRUCT_BODY()
public:
	UPROPERTY(EditAnywhere)
	FVector4 vector;
	UPROPERTY(EditAnywhere)
	bool bSelect;
};

UCLASS()

class PROEDITOR_API UMySecondObject :public UObject
{

	GENERATED_BODY()
public:

	UPROPERTY(EditAnywhere, meta = (UIMin = 1, UIMax = 10))//这里是UI中显示的范围
	int32 Heigh= 5;
};

UCLASS()
class PROEDITOR_API UMyDetailObject : public UObject
{
	GENERATED_BODY()
public:
	UPROPERTY(EditAnywhere, meta = (UIMin = 1, UIMax = 10))//这里是UI中显示的范围
	int32 CellWidth = 5;
	UPROPERTY(EditAnywhere)
	bool bPadToPowerOf2;
	UPROPERTY(EditAnywhere)
	FText editText;
	UPROPERTY(EditAnywhere)
	TArray<int32> monsters;
	UPROPERTY(EditAnywhere)
	FVector postion;
	UPROPERTY(EditAnywhere)
	FMyVector myVector;
};

构建完怎么显示呢?

声明 UMyDetailObject* myDetailObject;

myDetailObject = GetMutableDefault<UMyDetailObject>();
TSharedPtr<IDetailsView> DetailsView = FModuleManager::GetModuleChecked<FPropertyEditorModule>("PropertyEditor").CreateDetailView(DetailsViewArgs);
DetailsView->SetObject(myDetailObject)

return SNew(SDockTab)
    .TabRole(ETabRole::NomadTab)
    [
        // Put your tab content here!
        SNew(SBorder).BorderBackgroundColor(FLinearColor::Blue).DesiredSizeScale(FVector2D(20,40))
        [
            DetailsView->AsShared()
        ]
    ];

然后创建 DetailsView,将myDetailObject设置到myDetailObject中,这并不能显示出来,因为实际上显示的是SWidge,最后加入到需要显示的SWidge中就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值