Unity で画面の解像度を取得するいくつかの方法

Unityのロゴ。

Unity で画面の解像度を取得したいシーンがちょくちょくあります。いくつかの方法と取得できる値の種類についてまとめておきます。

Screen.width, height

"現在アクティブなウィンドウ" に与えられるスクリーンの解像度を取得します。 ゲーム実行中であれば GameWindow の解像度を取得することになります。

ただし、EditorWindow をアクティブにした状態で Screen.width などを参照すると、 実際に取得できる値は、アクティブになった EditorWindow の値になります。

Screen.CurrentResolution.width, height

Screen.width と同じように Screen クラスを使って取得しますが、取得できる値は実行環境の解像度です。 言い換えれば Unity を実行している画面全体の解像度を取得します。

例えば 1920x1080 の解像度を持つディスプレイ上で Unity を実行していれば、 Screen.CurrentResolution.width で取得できる値は 1920 になります。

UnityStats.screenRes

UnityStats.screenRes は、アクティブウィンドウにかかわらず、現在の GameWindow の解像度を取得します。 SceneWindow の解像度でない点に注意します。また取得できる値は string で "widthxheight" の形式です。

int に直したいときは例えば次のようにします。

string[] screenres = UnityStats.screenRes.Split('x');
int width = int.Parse(screenres[0]);

Reference