找回密码
 立即注册
查看: 266|回复: 0

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

[复制链接]
发表于 2022-10-19 09:51 | 显示全部楼层 |阅读模式
获取和设置屏幕分辨率是游戏开发中的常用功能之一,如截图时可能需要知道当前屏幕的分辨率,玩家自设定屏幕分辨率时也要求能动态设置屏幕分辨率。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 会导致切换屏幕分辨率时出现闪烁和黑屏的问题,不推荐使用。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-21 19:48 , Processed in 0.125378 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表