MRが楽しい

MRやVRについて学習したことを書き残す

Unityでデバイスの縦横状態をチェックする

本日は Unity の小ネタ枠です。
Unity でデバイスの縦横状態をチェックする方法を記事にします。

バイスの姿勢

Input.deviceOrientation を参照することで現在のデバイスの姿勢を取得できます。
docs.unity3d.com

以下の状態が取得可能です。

識別子 バイス状態
Unknown バイスの向きを特定できない状態
Portrait 縦モードで直立していてホームボタンが下部に表示される状態
PortraitUpsideDown 縦モードで逆さまに直立していてホームボタンが上部に表示される状態
LandscapeLeft 横モードで直立していてホームボタンが右側に表示される状態
LandscapeRight 横モードで直立していてホームボタンが左側に表示される状態
FaceUp スクリーンが上方向で地面に平行に置かれている状態
FaceDown スクリーンが下方向で地面に平行に置かれている状態

docs.unity3d.com

本変数のハンドラーはないので状態の変化を常にチェックする場合、以下のように Update で監視する必要があります。

void Update()
{
    if (Input.deviceOrientation == DeviceOrientation.FaceDown)
        // スクリーン下方向時の処理
}

ディスプレイの縦横状態を取得したい場合

DeviceOrientation はあくまでデバイスの姿勢を示すものなので、ディスプレイの縦横状態を参照するために利用するのは不適当です。
ディスプレイの縦横状態をチェックする場合は Screen.width と Screen.height を参照して画面のサイズを直接チェックします。
docs.unity3d.com

if (Screen.width < Screen.height)
{
    // 縦モード画面
}
else
{
    // 横モード画面
}
Debug.Log("WidthDisplay : " + !(Screen.width < Screen.height));

f:id:bluebirdofoz:20220308230553j:plain