一、关卡编辑器
二、Slate
1、游戏使用 Slate,模块依赖。
修改 [ProjectName].build.cs
PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });
2、显示控件
传入一个存储在成员变量中的控件引用(作为 TSharedPtr
):
GEngine->GameViewport->AddViewportWidgetContent( SNew(MyWidgetPtr.ToSharedRef()));
当将控件传入到 GameViewportClient::AddViewportWidgetContent() 时使用 SNew()
创建该控件:
GEngine->GameViewport->AddViewportWidgetContent( SNew(SWeakWidget) .PossiblyNullContent(MyWidgetClass));
或者使用 SAssignNew()
来创建控件,并将它分配给 TSharedPtr
成员,然后传入它:
GEngine->GameViewport->AddViewportWidgetContent( SAssingNew(MyWidgetPtr, SWeakWidget) .PossiblyNullContent(MyWidgetClass));
3、从视口中删除控件
通过向 GameViewportClient::RemoveViewportWidgetContent()
中传入到先前添加的控件的引用, 可以从视口中单独地删除Slate控件。
GEngine->GameViewport->RemoveViewportWidgetContent( SNew(MyWidgetPtr.ToSharedRef()));
另外,通过调用 GameViewportClient::RemoveAllViewportWidgets()
可以立即删除所有控件。
三、底层方法
1、template< class ObjectType, ESPMode Mode> class TSharedRef{};