白黒羊

【Unity】Unity 2020.3.22f1でビルドすると一部のiOS端末で画面内に白い線が表示される

バージョンの新旧は問わず一部のユーザーさんの端末でこのような画面になってしまうという現象が生じていました。
自分の端末ではまったく再現せず、なかなか大変でした。

ドット絵の一部に白い線が表示されています。1枚目は正常時はUI以外はただの真っ黒な画面のはずなのに……。

結論

iOSのライトモードでのみ生じる、黒い部分を自動的に白くしてくれるというバグでした。手元の端末でも設定をライトモードにしてみたところ再現できました。
Unity 2020.3.22f1、2020.3.23f1、2020.3.24f1、2020.3.25f1ではこの問題が生じるようです。

2019.4.X、2021.2.X、2022.1.Xでは修正されているようなので、2020.3.Xでもいずれ修正してもらえると思われます。

https://issuetracker.unity3d.com/issues/gameobjects-are-rendered-with-different-colors-in-the-ios-build

それまでは、以下のForumに書かれているようにXCodeなどでInfo.plistの UIUserInterfaceStyleDark にセットしてあげる必要があるようです。

<key>UIUserInterfaceStyle</key><string>Dark</string>

https://forum.unity.com/threads/regression-on-unity-2020-3-22f1-ios-with-post-processing-unchecked.1196239/

以下の記事で紹介している方法を応用すれば、いちいち手動XCodeで設定しなくてもビルド時に自動的に設定してくれます。

rootDict.SetString("UIUserInterfaceStyle", "Dark");

教訓 (余談)

手元で再現しないという都合により、正常に動いていたという前バージョンから、今回リリースしたバージョンまでのすべてのコミットでビルドし、どこからこの問題が発生するのかをユーザーさんにTestFlightで確認してもらうという作戦を取りました。
しかし、どれだけ試してもらっても、正常に動いていたはずのビルドですら異常な表示が出てしまい、どこでバグが混入したのかまったくわからず……。画像のおかげで、ライトやPostProcessなどで明るくなっている場所かつ、もともと黒で表現されていた場所が白くなっているということは予想が着いたのですが、その辺りの単語で検索しても引っかかってくれませんでした。
途中で気がつけてよかったのは、XCodeのシミュレータでビルドしてみたところ、そちらでは再現できるということでした。いちいちユーザーさんにお願いするのも申し訳ないですし時間もかかるということで、これは良かったです。色々なデバイスを再現できるようなので、これは今後同じようなことがあったら最初に試してみようと思います。

その後、最新版のデータをUnity Editorのバージョンを変更しながらビルドしてみたことで、Unity 2020.3.22f1以降この問題が起こるということがわかりました。
2020.3.22f1″ という検索ワードを得たことで、「unity “2020.3.22f1” ios」で検索し、今回参考にしたForumを見つけることに成功しました。

大変でしたが、解決してくれて良かったです。
良いお年を。