当前位置:   article > 正文

UE5窗口设置(最小化、最大化、关闭和还原)_ue5 无标题窗口模式

ue5 无标题窗口模式

1、需求

        大家都知道蓝图有QuitGame节点,可以退出游戏;SetFullScreenMode可以全屏、窗口化全屏和窗口化。但是为什么没有最小化啊。

2、注意事项和准备工作

2.1、模块添加

在Build.cs添加两个模块,分别是SlateSlateCore

2.2、头文件

#include "Engine/GameEngine.h"
#include "Widgets/SWindow.h"

2.3、注意事项

我测试之后发现只能在独立进程游戏情况下有效,而Play in Edit是无效的,如有知道为何的大佬,请赐教。

经过断点测试发现可以通过查阅viewport的类型来控制,所以现在已经可以在PIE下实现效果了

3、代码

3.1、声明

因为我是写在继承自蓝图函数库的类,所以加上了static为全局静态函数,各位可根据自己的需求选择

  1. UFUNCTION(BlueprintCallable,meta=(DisplayName="窗口化操作",WorldContext="WorldContextObject"),Category="StudyBF|Window|Notify")
  2. static void GameWindow(UObject* WorldContextObject,EWindowNotify WindowNotify);

3.2、定义

  1. void UMyBF::GameWindow(UObject* WorldContextObject,EWindowNotify WindowNotify)
  2. {
  3. TIndirectArray<FWorldContext> arr1 = GEngine->GetWorldContexts();
  4. for(int i=0;i<arr1.Num();i++)
  5. {
  6. if(arr1[i].WorldType == EWorldType::PIE || arr1[i].WorldType == EWorldType::Game)
  7. {
  8. const TWeakPtr<SWindow> GameWindowWeak = arr1[i].GameViewport->GetWindow();
  9. TSharedPtr<SWindow> GameWindow = GameWindowWeak.Pin();
  10. if(GameWindow)
  11. {
  12. switch (WindowNotify)
  13. {
  14. case EWindowNotify::Minimize :
  15. GameWindow->Minimize();
  16. break;
  17. case EWindowNotify::Maximize :
  18. GameWindow->IsWindowMaximized() ? GameWindow->Restore() : GameWindow->Maximize();
  19. break;
  20. case EWindowNotify::Exit :
  21. UKismetSystemLibrary::QuitGame(WorldContextObject,nullptr,EQuitPreference::Quit,false);
  22. break;
  23. }
  24. }
  25. break;
  26. }
  27. }
  28. }

3.3、枚举

EWindowNotify是我自己写的一个枚举,可以通过枚举进行不同的操作

  1. UENUM(BlueprintType)
  2. enum class EWindowNotify : uint8
  3. {
  4. Minimize UMETA(DisplayName = "最小化"),
  5. Maximize UMETA(DisplayName = "最大化/还原"),
  6. Exit UMETA(DisplayName = "退出")
  7. };

4、效果演示

4.1、蓝图节点

4.2、效果动图

5、学习方式

通过虚幻引擎自带的工具可以查看功能写法,然后找到源码部分借鉴学习

工具打开可以点击选择可测试命中控件,放到哪个地方都可以查阅相应的源码地址,非常好用

虚幻yyds~

6、结语

好了,本次分享结束了,如果对您有起到帮助,麻烦点个赞吧!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/646628
推荐阅读
相关标签
  

闽ICP备14008679号