加入"Slate","SlateCore"模块
Actor.cpp
// Fill out your copyright notice in the Description page of Project Settings.#include "MyWindowClass.h"// Sets default values
AMyWindowClass::AMyWindowClass()
{// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.PrimaryActorTick.bCanEverTick = true;
}// Called when the game starts or when spawned
void AMyWindowClass::BeginPlay()
{Super::BeginPlay();// Create a new SWindowTSharedRef<SWindow> NewWindow = SNew(SWindow).AutoCenter(EAutoCenter::PreferredWorkArea).SupportsMaximize(false).SupportsMinimize(false).SizingRule(ESizingRule::Autosized).CreateTitleBar(true)[// Add content to the window (for example, a vertical box with text)SNew(SVerticalBox)+ SVerticalBox::Slot().HAlign(HAlign_Center).VAlign(VAlign_Fill)[SNew(STextBlock).Text(FText::FromString("Hello, this is a new window!"))]];// Add the window to the Slate applicationFSlateApplication::Get().AddWindow(NewWindow);
}// Called every frame
void AMyWindowClass::Tick(float DeltaTime)
{Super::Tick(DeltaTime);
}
运行时创建scolorpicer窗口
加入"AppFramework","Slate","SlateCore"模块
// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "MyActorClass.generated.h"UCLASS()
class MYCOLORPICERT_API AMyActorClass : public AActor
{GENERATED_BODY()public:// Sets default values for this actor's propertiesAMyActorClass();protected:// Called when the game starts or when spawnedvirtual void BeginPlay() override;virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;public:// Called every framevirtual void Tick(float DeltaTime) override;TSharedPtr<SWindow> ColorPickerWindow;
};
// Fill out your copyright notice in the Description page of Project Settings.#include "MyActorClass.h"#include "Widgets/Colors/SColorPicker.h"// Sets default values
AMyActorClass::AMyActorClass()
{// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.PrimaryActorTick.bCanEverTick = true;
}// Called when the game starts or when spawned
void AMyActorClass::BeginPlay()
{Super::BeginPlay();// 创建一个新的 Slate 窗口ColorPickerWindow = SNew(SWindow).Title(FText::FromString("Color Picker"))//.ClientSize(FVector2D(400, 300)) // 设置窗口尺寸.IsTopmostWindow(true) // 保持在最前面.SizingRule(ESizingRule::Autosized)[SNew(SColorPicker)];// 将窗口添加到 UI 层FSlateApplication::Get().AddWindow(ColorPickerWindow.ToSharedRef());}void AMyActorClass::EndPlay(const EEndPlayReason::Type EndPlayReason)
{Super::EndPlay(EndPlayReason);if (ColorPickerWindow){FSlateApplication::Get().RequestDestroyWindow(ColorPickerWindow.ToSharedRef());}
}// Called every frame
void AMyActorClass::Tick(float DeltaTime)
{Super::Tick(DeltaTime);
}