Unityが重いときの原因・最適化して改善する方法解説!

URLをコピーする
URLをコピーしました!

CGBoxの一部の記事にはアフィリエイト広告が含まれております。

こんにちは!Unityで開発を進めていると、だんだんと動作が重くなってきた経験がありませんか?

動作が重いとストレスが溜まりますし、できるだけ快適に開発したいですよね。

そこで本記事では、そんなUnityが重いときの原因と最適化して改善する方法を解説していきます!

目次

Unityが重い時の原因一覧

まずは、Unityが重くなるそもそもの原因を考えてみましょう。

重い処理を行っている

Unityが重い時の原因として、以下のような例が考えられます。

  • Quality設定が最適化されていない
  • 重いアセットや3Dモデルを利用している
  • UIが多くありその更新処理が多い
  • ライトベイクを行っていない
  • スクリプト上で重たい処理を行っている

本記事では、これらの場合の解決方法を紹介していきます。

PCのスペック不足で重い

そもそもどのくらいの重い処理に耐えらるかは、PCのスペックによって決まります。

先に挙げた重い処理を行っている場合でも、ハイスペックなパソコンで開発をしていれば快適に動作することもあります。

逆にスペックが足りていない古いパソコンを使っていると、少しアセットを使っただけでも重くなってしまいます。

具体的に必要なスペックについては下の記事で解説しています。

あわせて読みたい
Unityの必要スペックとおすすめPCまとめ【初心者向け】 こんにちは!Unityでゲーム開発を始めるならば、PCのスペックは重要です。 適当なスペックのPCを買ってしまうと、開発途中で重くなりカクカクする…といったことが起きか...

Unityが重い時の最適化・軽量化する方法

Unityが重い時の解決方法を一つずつ解説していきます。

クオリティ設定を見直そう

Unityのクオリティ設定を見直すだけでも、重さが改善される場合があるので試してみる価値はあります。

Quality設定はUnity上部のEdit→Project Settingsから開くことができます。

まずはQualityの設定を下げて動作を確認してみましょう。

Defaultとなっているところから設定を変えることができます。

Qualityページから設定できる、負荷に関わる項目を他にもいくつか紹介していきます。

Pixel Light Count

Renderingの項目にPixel Light Countがあります。

これはオブジェクトに当てられるライトの数の制限を表しています。

デフォルトでは4になっていましたが、数字が大きいほど負荷がかかるので小さい数字を設定しましょう。

Shadows

Shadowsは影の設定項目です。

Shadow Resolutionの設定を高くしていると影のクオリティは高くなりますが、その分負荷も増えてしまいます。

プロジェクト次第ですが、影のクオリティが必要なければResolutionを下げる

もしくは影が全く必要なければShadowsからDisable Shadowsを選ぶことで影が描画されなくなります。

VSync Count

Renderingの項目にVSync Countがあります。

こちらをDon’t Syncにすることでフレームレートを指定して固定することができます。

ゲームに応じたフレームレートを設定することをオススメします。

Dont ‘t Syncに加えて、スクリプト内に下のコードを記述することでフレームレートが固定できます。

Application.targetFrameRate = 60;

フレームレートの設定方法について詳しくは下の記事で解説しています。

あわせて読みたい
【Unity】フレームレート(fps)の設定・表示方法 こんにちは!ゲームをやっていると60fpsとか、フレームレートといった言葉を聞くことがありますよね。 銃で打ち合うようなゲームの場合は特にフレームレートの設定が重...

その他オフにすることで負荷を下げる項目

Quality設定にある以下の項目はオフ(Disabled)にすることでゲームの負荷を下げることができます。

プロジェクトに必要なさそうな処理はオフにするようにしましょう。

  • Anti Aliasing→アンチエイリアス処理
  • Realtime Reflection Probes→反射・映り込みの表現
  • Texture Streaming→テクスチャをメモリにロード、メモリからアンロードするシステム
  • Soft Particles→パーティクルの描画設定

UIのCanvasを分ける

UnityでUIを使うときにはCanvasを用いてその中に配置していきます。

このCanvasですが、一つのCanvasの中にすべてのUIを配置するのはオススメしません。

Unityではプログラムの途中であるUIを更新する処理が入った場合、そのUIが所属するCanvasのUIすべてをチェック・更新する処理が入ってしまうのです。

そのためCanvas内のUIの数が多ければ多いほど、更新時に負荷がかかりパフォーマンスが悪化します。

それを避けるために、Canvasを複数個作り更新頻度の高いUIは一つのCanvasにまとめて配置

更新頻度の低いUIは別のCanvasに配置するのがオススメです。

ライトベイクで描画負荷を減らす

ライトマップのベイクで光の当たり方を事前に計算しておけば

リアルタイムで行う処理の負荷を下げることができます。

ライトマップのベイクの方法については下の記事で解説しています。

あわせて読みたい
【Unity】ライトマップのベイクが汚い・遅いときの対処法 こんにちは!コチラの記事では、Unity のライトマップのベイクの方法と、ベイクが汚い・遅いときの対処法について解説していきます! 【ライトマップのベイクとは】 ラ...

重たいコードの数を減らす

Unityで使う構文の中には重たい処理になってしまうものもあります。

代表的なものとしては、GameObject.Find系の処理です。

Findはヒエラルキー上のオブジェクトを一つずつ全てチェックしてしまいます。

Findを多用するのは避け、下のようにインスペクター上からゲームオブジェクトを予め設定できるようにするのがオススメです。

GetComponentの処理に関しても同様です。

例えばRigidbodyを取得したい場合はよくありますが、これもインスペクターから登録しておくことで負荷を下げることができます。

ゲームオブジェクトを軽量化・カメラの描画設定を見直す

他にも最適化・軽量化を行う方法として以下のようなものがあります。

  • オクルージョンカリングを設定する
  • 3Dモデルのメッシュを軽量化するアセットを使う
  • タイルマップを使って2Dゲームを軽量化する
  • DrawMeshで大量のオブジェクトを描画する
  • RenderTextureでカメラの描画負荷を下げる

これらの方法については下の記事で解説していますので、参考にしてみてください。

あわせて読みたい
【Unity】軽量化する方法!物理演算の描画負荷を減らそう こんにちは!Unityでゲーム作りを進めていると、だんだんと動作が重くなってきた…ということがありますよね。 そんな時はワールドを軽量化して動作を軽くしてあげなけれ...

重い処理を非同期処理する

何万回もの繰り返し処理のような重たい処理をスクリプト内で行っていると

プログラム実行時に画面が一瞬止まるような動作になることがあります。

これを避けるために、非同期処理を行うというものがあります。

非同期処理を行えば、画面の描画に影響を与えずに同時進行で計算を行えるようになります。

非同期処理の詳しい設定方法については下の記事が参考になります。

Saba no Games
【Unity】重い処理はメインスレッド以外の別スレッドで動かそう!!【非同期処理】 この記事はITRC Advent Calendar 2021 3日目の記事です。 こんにちは!saba🐟です! みなさんはfor文やwhile文で計算をぶん回したい時、どのように計算をさせていますか?そ...

おすすめアセット

Build Report Tool

あわせて読みたい
Build Report Tool | Utilities Tools | Unity Asset Store Use the Build Report Tool from Anomalous Underdog on your next project. Find this utility tool & more on the Unity Asset Store.

Build Report Toolは、ビルドレポートによりどのアセットが容量を圧迫しているかを教えてくれるアセットです。

プロジェクトに含まれているけど使われていないアセットを特定し、削除することもできます。

軽量化したいと考えている人にとって非常に役立つアセットです。

Scene Optimizer

あわせて読みたい
Scene Optimizer | Utilities Tools | Unity Asset Store Use the Scene Optimizer from Procedural Worlds on your next project. Find this utility tool & more on the Unity Asset Store.

Scene Optimizerは、シーンを最適化してプロジェクトを軽量化したいときに役立つアセットです。

シーンに配置したオブジェクトを一つ一つ軽量化するのは非常に手間がかかります。

そんな時このアセットを使えば簡単な設定だけで、すべてのオブジェクトを一度に軽量化してくれます。

まとめ

以上、Unityが重いときの原因・最適化して改善する方法を解説してきました。

プロジェクトを最適化して、快適にゲーム開発を行っていきたいですね!

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
URLをコピーする
URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Unityメインの個人開発者。UnityでAIを学習させてみたり、野球ゲームを作ってみたりと色々してました。現在はライターとして、Unityで開発する人の力になる記事が書けるよう奮闘中。

目次
閉じる