2023年1月6日
虚幻引擎运行时态调整游戏窗口最大化与最小化
前言
一般我们有可能需要在游戏运行时调整启动窗口的最大化和最小化,在虚幻引擎中如何实现呢?
思路
首先虚幻引擎的整个页面都是由Slate实现,所以如果想要调整窗口的状态,需要从Slate中入手。
窗口肯定是先要搜索Window,在Slate中窗体的类就是SWindow,在SWindow中我们也很容易找到最大化与最小化的相关函数。
接下来就需要思考游戏窗口会存储在哪里。通过查找源码可以发现游戏的窗体被存储在UGameEngine中,所以从Engine实例即可完成操作。
代码
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