チラ裏ちくたく

クロックのメモ帳です。

画面サイズ、スクリーンモードの切り替え

プレイヤーが設定画面からゲームウィンドウの画面サイズ、スクリーンモードを切り替えれる機能を実装したので、メモ代わりに投下。

 

Screen.SetResolution関数を使う 

第一、第二引数に画面の解像度、第三引数にスクリーンモード(Bool型、もしくはFullScreenMode)、第四引数にHzを指定できます。

 

例えば、画面解像度を1920x1080、フルスクリーンなら

Screen.SetResolution(1920, 1080, true);

 

画面解像度を1280x720、ウィンドウモードなら

Screen.SetResolution(1280, 720, false);

 

リフレッシュレートを120hzに変更したい場合は、第四引数にそのままHzの数値を入れてあげればOKです。

Screen.SetResolution(1920, 1080, true, 120);

docs.unity3d.com

FullScreenMode

前述のとおり、第三引数のウィンドウモードはbool型以外にも、FullScreenModeで指定も可能です。

 

例えば、画面解像度を1920x1080、フルスクリーンなら

Screen.SetResolution(1920, 1080, FullScreenMode.ExclusiveFullScreen);

 

画面解像度を1280x720、ウィンドウモードなら

Screen.SetResolution(1280, 720, FullScreenMode.Windowed);

 

また、枠なしのフルスクリーンウィンドウ(FullScreenMode.FullScreenWindow)や、FullScreenMode.MaximizedWindowというモードも指定できるそうです。

docs.unity3d.com

 

注意点

Editor上で動かしても機能しません。ビルドしてデバッグする必要があります。

詳しくは調べてませんが、SetResolutionで設定した解像度やウィンドウモードは次回以降の起動でも引き継がれるそうで、別途PlayerPrefsやEasySave、もしくは独自で実装したセーブデータを用いなくてもよさそうです。