虚幻引擎运行时态调整游戏窗口最大化与最小化

前言

一般我们有可能需要在游戏运行时调整启动窗口的最大化和最小化,在虚幻引擎中如何实现呢?

思路

首先虚幻引擎的整个页面都是由Slate实现,所以如果想要调整窗口的状态,需要从Slate中入手。

窗口肯定是先要搜索Window,在Slate中窗体的类就是SWindow,在SWindow中我们也很容易找到最大化与最小化的相关函数。

接下来就需要思考游戏窗口会存储在哪里。通过查找源码可以发现游戏的窗体被存储在UGameEngine中,所以从Engine实例即可完成操作。

代码

 1if (UGameEngine* GameEngine = Cast<UGameEngine>(GEngine))
 2{
 3    //弱指针需要进行pin操作,防止指针被释放
 4    TSharedPtr<SWindow> GameWindow = GameEngine->GameViewportWindow.Pin();
 5    if (GameWindow)
 6    {
 7        //窗口最小化
 8        GameWindow->Minimize();
 9        //窗口最大化
10        GameWindow->Maximize();
11    }
12}

注意

项目中使用Slate切记一定要引入模块,Slate,SlateCore

引擎版本:4.27.2

文章评论