UE4 Slate教程1——快速入门

1、新建项目

本教程基于Wiki中的“Slate, Hello”项目作为引导。

1、新建空白蓝图项目,命名为HelloSlate:
UE4 Slate教程1——快速入门_第1张图片
2、使用类向导,添加一个HUD类,命名为“StandardHUD”:
UE4 Slate教程1——快速入门_第2张图片
3、再添加一个Slate控件类,命名为“StandardSlateWidget”:
UE4 Slate教程1——快速入门_第3张图片
4、添加模块依赖,打开HelloSlate.Build.cs,取消注释如下代码:

// Uncomment if you are using Slate UI
PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });

此后最好刷新一下项目:
UE4 Slate教程1——快速入门_第4张图片

2、编写代码

HUD类

StandardHUD.h:

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/HUD.h"
#include "StandardHUD.generated.h"

UCLASS()
class HELLOSLATE_API AStandardHUD : public AHUD
{
	GENERATED_BODY()

public:
	TSharedPtr<class SStandardSlateWidget> MyUIWidget;

	virtual void BeginPlay() override;
};

StandardHUD.cpp:

#include "StandardHUD.h"
#include "SStandardSlateWidget.h"
#include "Engine/Engine.h"
#include "Engine/GameViewportClient.h"
#include "DeclarativeSyntaxSupport.h"
#include "Widgets/SWeakWidget.h"

void AStandardHUD::BeginPlay()
{
	Super::BeginPlay();

	GEngine->GameViewport->AddViewportWidgetContent(
		SNew(SWeakWidget)
		.PossiblyNullContent(SAssignNew(MyUIWidget, SStandardSlateWidget))
	);
}

Slate控件类

SStandardSlateWidget.h:

#pragma once

#include "CoreMinimal.h"
#include "Widgets/SCompoundWidget.h"
#include "DeclarativeSyntaxSupport.h"

class HELLOSLATE_API SStandardSlateWidget : public SCompoundWidget
{
public:
	SLATE_BEGIN_ARGS(SStandardSlateWidget)
	{}
	SLATE_END_ARGS()

	/** Constructs this widget with InArgs */
	void Construct(const FArguments& InArgs);
};

SStandardSlateWidget.cpp:

#include "SStandardSlateWidget.h"
#include "SlateOptMacros.h"
#include "Widgets/Text/STextBlock.h"

BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
void SStandardSlateWidget::Construct(const FArguments& InArgs)
{	
	ChildSlot
	[
		SNew(STextBlock)
		.Font(FSlateFontInfo("Veranda", 100))
		.Text(NSLOCTEXT("HelloSlate", "HelloSlateText", "Hello, Slate!"))
	];
	
}
END_SLATE_FUNCTION_BUILD_OPTIMIZATION

3、查看效果

编译项目,添加一个GameMode蓝图类命名为“HelloSlateGameMode”,设置其HUD Class为:StandardHUD
UE4 Slate教程1——快速入门_第5张图片
并添加以下蓝图节点以显示光标:
UE4 Slate教程1——快速入门_第6张图片
打卡世界设置,将GameModeOverride设置为刚才新建的GameMode:
UE4 Slate教程1——快速入门_第7张图片
点击运行,即可看到效果:
UE4 Slate教程1——快速入门_第8张图片

你可能感兴趣的:(UE4)