前言

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

思路

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

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

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

代码

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

注意

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

引擎版本:4.27.2