AppSeedのアプリ開発ブログ

アプリ開発会社AppSeed(アップシード)開発担当のブログです。iOS、Android、Unity、Cocos2d-xなどアプリ開発関連のTipsや備忘録、アプリ開発に役立つ情報を発信します。

【Unity】iPhoneX、iPhoneXSなどの縦長系の端末かを判定する方法

https://unity3d.com/files/images/ogimg.jpg?1


Unityを使ってアプリを開発するようになってから約1年くらい経ちましたが、
Unityでアプリを開発する上で地味に厄介なのが、iPhoneXなどの縦に細長い系の端末です。

iOSAndroidも最近まではある程度画面の縦横比をそこまで考慮しなくてよかったのですが、
iPhoneXの登場あたりから画面の縦横比が特殊な端末の場合のUIも考慮する必要が出てきました。

今回は、iPhoneXやiPhoneXSなどの縦に長い端末かどうかを判定する方法についてメモしておきたいと思います。


iPhoneX、iPhoneXSなどの縦長系の端末かを判定する方法

まず、プログラム的には以下のような感じになります。

public static class Util
{
    public static bool isVertically(float width,float height)
    {
        if((float)(height/width) >= 2.0)
        {
            Debug.Log("iPhoneX系?");
            return true;
        }
        else
        {
            return false;
        }
    }
}

呼び出し方は以下です。

if (Util.isVertically(Screen.width, Screen.height))
        {
            //iPhoneX系の場合の処理
        }

概要としては、画面の縦横サイズを取得して、高さを幅で割り、
縦横比の縦の割合が横1に対して2以上になる場合にiPhoneX系の細長端末として判断しています。


なんで縦横2:1かというと、下記の比率計算機を使ってiPhoneのそれぞれの画面サイズを調べたところ、
iPhoneX(2436×1125)系の端末のみ縦横比率が2:1になっていました。

tools.m-bsys.com


iPhoneX(2436×1125)↓
【Unity】iPhoneX、iPhoneXSなどの縦長系の端末かを判定する方法

iPhone6sPlus(1920×1080)↓
【Unity】iPhoneX、iPhoneXSなどの縦長系の端末かを判定する方法

iPhoneX系以外はだいたい横1に対して縦が1.7とか1.6とかが多いです。

僕の作るアプリは、iPhone6sPlus(1920×1080)のサイズをベースとする場合が多いので、
iPhoneX系の場合だけUIの処理を変えればUIの崩れを防げると考えたという流れです。


多分この判定を使えば、Android含めおおよそのデバイスでいい感じに表示できると思うので、具体的なやり方についても今後書きたいと思います。