Unity環境でAndroidアプリを最適化しよう!

Unity

最適化をしよう!

最適化案3:マテリアルを最適化、種類をへらす

さきほどのテクスチャを一つにまとめる項目と同じ原理です。
マテリアルの種類が多いとポリゴンを設定する前の手順「マテリアル(シェーダ)を設定」が増えてしまうことで処理負荷が上がってしまいます。
それを回避するため利用するシェーダの数は減らしましょう。

私の場合は2Dゲームでマテリアルは2つぐらいしかないので大きな対応は入れていませんが
処理が大きく変わるシェーダ以外は一つにまとめるなどすると効果的だと思われます。

例えばノーマルマップ(凸凹感用のテクスチャ)しか使わないマテリアルとエミッション(発光用テクスチャ)しか使わないシェーダを分けている場合なんかは、意外に実際の描画処理よりもシェーダー差し替え「マテリアル(シェーダ)を設定」の方が重く無駄な処理になっているケースがあります。

もちろん描画数やその順番にもよるのですが、処理の流れをシンプルにするという意味でもマテリアルをできるだけ減らすというのは非常に重要です

 

最適化案4:VSyncをOFF

モニターや様々な家電の画面というのは画面にキレイに出るように工夫をされています。
その機能がVSyncと呼ばれるものとなります。

「ProjectSettingタブ→Quality→Other→VSync Count」を
「Don’t Sync(同期しない)」に変更します。

設定画面はこんな感じです(赤丸のところ)。

VSync(ブイシンク、垂直同期)はSync(同期、待ち合わせ)というぐらいなので実は画面がキレイに出るようにタイミングを待っているのです。

そしてその機能を容赦なくOFFにします!

一見処理がキレイに出なくなりそうですが、ただ画面表示の切り替えタイミングがずれるだけなので大きく見た目に影響はないと思います。

 

ゲーム開発のVSyncとは

こちらは余談ですが
ゲーム開発ではグラフィックとゲーム処理というのは別の実行ライン(スレッド)で動いていることが多く、おそらくこのVSyncはゲーム側の処理待つことを意味しています。

当然ゲーム側の処理を待ってしまうと待ち合わせが必要になるためグラフィック側も次の作業に入れないため処理が遅くなってしまいます。
そのゲーム処理を待つのをなくしてしまうのが今回の設定だと思われます。

複数の処理が同時に実行されるマルチスレッドプログラミングなんかでは基本的に同期は最低限しないのがベストなのでそういったものと同じような考え方ですね。

コメント

スポンサーリンク
タイトルとURLをコピーしました