#memo

indiedev太郎

UE4の解像度設定の実装

https://i.gyazo.com/e117692314aebab0ae7c662c61203dad.gif


前回の内容の派生記事、解像度設定部分だけまとめ
とりあえずフルスクリーンと解像度数値設定のみ

ネットで出てくるコンソールコマンド(r.SetRes)をつかった解像度設定は、Configファイルに反映されないので、自分でゲーム開始時にどうこうする必要がある
Configファイル、GameUserSettings.iniという物があって、ここに解像度設定を書いておけば自動で起動ウインドウのサイズや設定をやってくれる

このConfigファイルを更新してくれたり、ウインドウサイズを変更する関数を持っているのその名もズバリGameUserSettingsクラスがあり、
GameUserSettingsはC++で関数を作成しなくても、デフォルトのBPノード(GetGameUserSettings)で参照を貰えて、関数も大抵BPに公開されているので、ノーコーディングでConfigファイルの読み込み、書き出しまで行ける

https://i.gyazo.com/a1c6c93c9a2c8571241b34afd559dcfc.png

使いそうな関数は
GetScreenResolution - Configにある解像度をみる
GetFullscreenMode - ConfigにあるFullscreenMode(ウインドウモード、0はフルスクリーン、1はウインドウドフルスクリーン、2はウインドウのenum)をみる

更新するとき
ConfirmVideoMode - LastUserConfirmedResolutionSizeX みたいに、解像度とウインドウ設定は前回の値を保存しておく変数があって、そこに現在の値を代入する関数、これを使うと例えば、解像度変更でよくある、10秒以内にOKを押すと確定みたいな処理が作りやすいみたいな話だと思う、必要なければいらない
SetScreenResolution - 解像度更新
SetFullscreenMode - ウインドウモード更新
SaveSettings - Configファイル更新

このままだとファイルだけ更新されて見た目変わらないので、おなじみのr.SetResかRequestResolutionChangeで任意のタイミングで変える

ひとつ問題があって、デフォルトのウインドウドフルスクリーンからウインドウモードに変更した時、ツールバーがデスクトップの上に隠れてしまうので、再起動を要請するか、ちょっとずらすコードが要る