ゆにてく備忘録

Unityやその他学んだ事を忘れないために書くぶろぐ

【Unity】uGUIでのiPhoneXの対応

iPhoneX対応のスクリプトを書きました.最後にスクリプトは貼っておきます.

iPhoneX対応について

ざっくり説明すると,iPhoneXは上部のディスプレイの上の部分の出っ張りと,ホームボタンの代わりとなるホームインジケータが表示される部分にボタンなどをおいてはいけません.ボタンをおいて良い部分はSafeAreaと言います.詳細は下

iPhone X - Overview - iOS Human Interface Guidelines

Unity対応

UnityではUnity 2017.2.0p1からSafeAreaを取得する関数(Screen.safeArea)が実装されました.それを用いて,UIのアンカーポイントを変更するスクリプトを書きました.例えば,画面の端にアンカーポイントを設定していたものは,実行時にSafeAreaの端に変更されます.Screen.safeAreaは現状iPhoneX以外はScreenと同じサイズを返します

SafeAreaBounds.cs

f:id:n_taku:20171119145644p:plain

このスクリプトをつけると,実行時にアンカーポイントをSafeArea内に自動で補正します.Editor上で解像度をiPhoneX(1125x2436)にして実行するとiPhoneXのsafeAreaのエミュレーションができます.

実行結果

SafeAreaBounds.csをつけた左下揃えのボタンと,デフォルトの右下揃えのボタンの比較です.

f:id:n_taku:20171119151455p:plain

f:id:n_taku:20171119151704p:plain

f:id:n_taku:20171119152821p:plain

最後に

多分デザインによって対応方法はまちまちだろうけども,とりあえず一案ということで.上のスクリプトは下を参考に作りました.

p12tic / iOSSafeAreasPlugin / source / — Bitbucket

SafeAreaBounds.cs

gista83409ec6274fc4cccd686da13e3bfe0