ainatipen 发表于 2022-10-19 09:51

UE5中获取和设置屏幕分辨率:UGameUserSettings

获取和设置屏幕分辨率是游戏开发中的常用功能之一,如截图时可能需要知道当前屏幕的分辨率,玩家自设定屏幕分辨率时也要求能动态设置屏幕分辨率。UE 提供了成熟的方法,即 UGameUserSettings,实现了这项功能。展开来说,有一个 UGameUserSettings 的全局单例,通过该单例的 GetScreenResolution() 就能获取当前屏幕的分辨率,通过 SetScreenResolution() 就能动态设置屏幕分辨率。而这个单例就是:GEngine->GetGameUserSettings()。
一,获取屏幕分辨率:GetScreenResolution()

获取当前屏幕分辨率很简单,一行代码就可以,如下所示:
FIntPoint Resolution = GEngine->GetGameUserSettings()->GetScreenResolution();
UE_LOG(LogTemp, Warning, TEXT("Current Resolution: %d %d"), Resolution.X, Resolution.Y); // 这一行用于打印,可删除
不过,需要包含下 UGameUserSettings 所在的头文件:
#include "GameFramework/GameUserSettings.h"
二,设置屏幕分辨率:SetScreenResolution()

与 GetScreenResolution() 相对,通过 SetScreenResolution() 就能设置屏幕分辨率。设置方法如下:
GEngine->GetGameUserSettings()->SetFullscreenMode(EWindowMode::Windowed);
GEngine->GetGameUserSettings()->SetScreenResolution(FIntPoint(1800, 1000));
GEngine->GetGameUserSettings()->ApplySettings(true);
特别需要注意的是,在设置屏幕分辨率之前,一定要把全屏模式设成 EWindowMode::Windowed,这样设置实际上就是退出全屏模式;在设置屏幕分辨率之后,还需要调用 ApplySettings(true),这样刚才的设置才能生效。以上两步操作必不可少。
设置后的效果如下,原来的全屏模式变成分辨率为1800*1000的窗口模式:



SetScreenResolution()的效果

三,设置全屏:SetFullscreenMode()

作为设置屏幕分辨率的延伸,有时还需要设置全屏。设置全屏的方式是 SetFullscreenMode()。通过调用 SetFullscreenMode() 设置全屏模式就能实现全屏。设置方法如下:
GEngine->GetGameUserSettings()->SetFullscreenMode(EWindowMode::WindowedFullscreen);
GEngine->GetGameUserSettings()->ApplySettings(true);
同样地,设置完后还需要调用 ApplySettings(true) 使设置立即生效。
EWindowMode 中除 WindowedFullscreen 可以设置全屏外,还有一个枚举值 Fullscreen 也可以设置全屏。但是 Fullscreen 会导致切换屏幕分辨率时出现闪烁和黑屏的问题,不推荐使用。
页: [1]
查看完整版本: UE5中获取和设置屏幕分辨率:UGameUserSettings