UE4では、ウィンドウの解像度を変えるためにはどこかにあるらしいコンフィグファイルを書き換えなければならないらしい。その方法を使った場合、おそらくゲームが起動している間に解像度を変更することができない。何かゲームの中から変更する方法はないかと調べたところ、Blueprintを使ってコンソールコマンドを叩くことで変更できるようだ。リンク。 しかしプレイヤーにコンソールコマンドを叩いてもらうわけにもいかない。
こんな感じのUIを用意して解像度を選ばせるのが一般的だけど、今回は簡単にUMGを使ってHUD上に、「数字を入れてボタンを押すと解像度が変更されるBP」を作って置いてみた。UMGでHUDを作る部分については公式のチュートリアルを見ながら作成した。
ダ、ダサい。。。
解像度を変更するコンソールコマンドを叩くには、そのコンソールコマンドを動的に生成する必要がある。コンソールコマンドは例えば以下の様な文字列だ。この数字部分は変えたい解像度の数字になってなくちゃいけない。
r.setRes 1920x1080
2つの数字を取ってきて文字列に変換、連結するように繋ぐ。そして、ボタンが押されたら実行されるように繋ぐ。r.setResのあとにスペースを入れ忘れないように。
イメージとしては、"r.setRes " + num1 + "x" + num2
のような足し算をしている。
そうすると、
好きな解像度に変更できる。数字が整数でなくて小数でもとりあえず落ちずに動く。
これはAndroidでも有効だったが、スマートデバイスで解像度変更ってやる意味があまりなさそうだ。(Nexus9で試した)
(なぜか解像度変更の変の文字が表示されない。)