Android の特定機種で画面が乱れたら……

高橋 啓治郎 -

Android の特定機種において、下のスクリーンショットのように画面が乱れるという報告を受けることがあります。

(左:正常な状態、右:乱れた状態)

このような現象が起きた場合には、画面全体をクリアしているカメラが少なくとも1つ存在しているかどうか確認してみてください。つまり Clear Flags が “Skybox” あるいは “Solid Color” になっているカメラがシーン内に存在するかどうか、ということです。

画面をクリアするカメラが存在しない場合、描画を行わなかった領域には、メモリ上に残されたゴミが表示されることになります。必ず1つは画面全体をクリアするカメラを置くようにしましょう。ロードや場面転換などで画面に何も表示していない場合にも、これを守るようにしてください。

……というのが基本的な考え方なのですが、ややこしいことに、多くの Android 端末においては、フレーム更新時に勝手に画面がクリアされます。すべてのカメラが “Don’t Clear” に設定されていたとしても、ゴミを残すことなく上手い具合に描画できてしまいます。そのために、画面をクリアするカメラが存在しないことに気付きにくいのです。

この現象は Google Nexus 5 で再現できる模様です。「Nexus 5 で画面が乱れるんですけど」と報告されたら、これらの設定について確認してみてください。

他にご質問がございましたら、リクエストを送信してください

3 コメント

  • 0
    Avatar
    時村良平様

    画面クリアのためにSolid Colorで塗りつぶしを行っていても一部の機種で同様の現象が発生するようです。
    バグ報告のあった機体
    SO-04E
    LG optimus L-05E

    以前ご報告した リクエスト#10970  のケースです。

    通常は発生しないのですが、ゲームを続けていると発生する瞬間があるようです。(特にタップのタイミングなどでの発生が多いようです)

    結局、UI.Imageなどで背景となるポリゴンを必ず描画することで回避できていますが、そのために構造が若干複雑になってしまっています。

  • 0
    Avatar
    高橋 啓治郎

    そこで画面クリアを行っているカメラの viewport は画面全体を覆い尽くす設定になっていましたでしょうか? それでもクリアできないとすれば、かなり謎です……

    また、当該現象については、こちら↓と類似する現象が発生しているのではないか、とも考えています。
    http://helpdesk.unity3d.co.jp/hc/ja/articles/204693550

  • 0
    Avatar
    時村良平様

    viewportはX=0,Y=0,W=1,H=1なので、全画面クリアになっているかと思います、
    試しに色を黒ではなく赤などに変えると、ちゃんと背景が赤になったので描画範囲は問題ないと思います。アルファチャンネルを1.0でクリアするようにしても、やはり同様の現象が発生したようです。

    ただ、個人開発のためバグ報告のあった該当機種を持っておらず、実際にバグを再現できていない状況です。

ログインしてコメントを残してください。
Powered by Zendesk