LoginSignup
1
2

More than 5 years have passed since last update.

UnityIPhoneXSupportでUnityのiPhoneX対応を行ったら罠にハマった

Posted at

前提

https://qiita.com/tkyaji/items/8cdc0a4324d4e89633e8
を参考に、UnityIPhoneXSupport_Portrait.unitypackage をインポートすること

問題点

Screen.orientation = ScreenOrientation.Portrait
処理のあと、iphoneXのノッチ対応が無効になってしまう

対策

Screen.orientation = ScreenOrientation.Portrait
を行う前に、
QualitySettings.vSyncCount = 0;
を実施し、その1フレーム後に
Screen.orientation = ScreenOrientation.Portrait
を処理するように

分析


Q:どうして UnityIPhoneXSupport_Portrait.unitypackage に上記の問題がありますか?
A:このソースを適用することで、iphoneXのノッチ問題は余白と高さ(height)の調整が解決されますが、この調整はUnityが起動した直後のみ実施されるため、それ以降の処理で、もし余白と高さ(height)が他の処理で変わったら、ノッチ対応が無効になってしまいます。


Q:どうしてQualitySettings.vSyncCount = 0で問題を解決できますか?
A:vSyncCount = 0で画面の垂直同期をOFFにすることが出来ます。普段この垂直同期がONの状態で、Screen.orientation = ScreenOrientation.Portraitなどの処理で、①で説明した余白と高さなどが再計算されますが、OFFにすることで再計算されなくなります。

備考

・垂直同期をOFFにしてノッチ対応が無効になる問題を解決しましたが、OFFにすることで他の問題が起きるかはまだ分かりません。使用する場合は自己責任でお願いします。

・急ぎでない場合、UnityIPhoneXSupportでiphoneXノッチの対応をするのはあまりお勧めできません。
UnityIPhoneXSupportはビルト後のソース置き換えで対応しているため、unity本来の機能のsafeArea取得がこのソース置き換えにより、Screen.safeArea.heightの値がScreen.heightと同じ値になってしまいます。
safeAreaを使った判定が無効になるため、予想できない問題が起きる恐れがあります。

参考資料

https://qiita.com/tkyaji/items/8cdc0a4324d4e89633e8
https://ameblo.jp/sugawara-monolizm/entry-11875747245.html

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2