スマホのAndroidが5.0になったので、それで作成途中のゲームを動かしてみたら……カクカクする!
それまで30fps出ていたのに、11fpsにまで落ちてしまった。
とりあえず解決法をぐぐってみたら
・vSyncをONにする(QualitySettings.vSyncCount = 1)
・FPSを60にする(Application.targetFrameRate = 60)
・SkyBoxを無くす
・Quality Settingsのレベルを落とす
・OpenGL3.0を使わない
・テクスチャの解像度を半分にする
と、色々ありますが、少し効果あったのはOpenGL3.0を使わないのと、テクスチャの解像度を半分にするです。それでも15fpsくらいしか出ないけど。
OpenGLを2.0固定にするには
File → Build Settings → Player Settings → Other Settings → Auto Graphics APIのチェックを外す → 出てきたOpenGLES3を削除。
テクスチャの解像度を半分にするには
Edit → Project Settings → Quality → Texture QualityをHalf Resに変更。
SSAOを無効にする!
仕方ないので、オブジェクトの設定を1つ1つ見直してたら、カメラにSSAO(スクリーンスペースアンビエントオクルージョン)がアタッチされてるのに気付きました。そういえばUnity5.0から無料版でも使えるようになったから、嬉しくなって設定したんだった。
これを無効化してみたら……60fps出た! 前より早くなってるじゃん。
結局、俺が余計なことしてたのか(汗)
このSSAOとは、リアルタイムにオブジェクト同士の関係性を計算して、影をより精密にしてくれる仕組みです。これは重たいわ。
Android 4.4の時にはこの設定無視されてたのかもね。
ようやく解決です。