本日は Unity の小ネタ枠です。
Unity でデバイスの縦横状態をチェックする方法を記事にします。
デバイスの姿勢
Input.deviceOrientation を参照することで現在のデバイスの姿勢を取得できます。
docs.unity3d.com
以下の状態が取得可能です。
識別子 | デバイス状態 |
---|---|
Unknown | デバイスの向きを特定できない状態 |
Portrait | 縦モードで直立していてホームボタンが下部に表示される状態 |
PortraitUpsideDown | 縦モードで逆さまに直立していてホームボタンが上部に表示される状態 |
LandscapeLeft | 横モードで直立していてホームボタンが右側に表示される状態 |
LandscapeRight | 横モードで直立していてホームボタンが左側に表示される状態 |
FaceUp | スクリーンが上方向で地面に平行に置かれている状態 |
FaceDown | スクリーンが下方向で地面に平行に置かれている状態 |
本変数のハンドラーはないので状態の変化を常にチェックする場合、以下のように 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));