こんにちは、Unityエンジニアのオオバです。
Unity開発初期は快適だったけど、開発中盤からだんだんUnityエディタの操作が重くなってきますよね。
なぜなら開発が進むにつれてUnityプロジェクトには 大量のアセットが追加されていくため です。アセットとはC#スクリプトやテクスチャといったゲームに必要なオブジェクト全般を指します。ゲームを完成させるためにはアセットの追加は必須ですし、追加を止めることはできません。
つまりどんどんUnityの動作は重くなっていくわけです。
そこで本記事ではUnity動作の低下を限りなく抑えるためのテクニックを3個紹介していきます。
👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!
1.Unityの再生モードを爆速化するEnter Play Mode Settings
最初にお届けするのはUnity高速化の定番中の定番 「Enter Play Mode Settings」 です。今回紹介するTipsの中でも最も高い効果を発揮する設定です。
読むより見た方が早いので、次のオオバのポスト内の動画を見てみてください。
Unityエディタ再生ボタンを押してから計測したゲーム実行までの時間です。通常8秒かかっていたところ、Enter Play Mode SettingsをONにしたことで2秒へ 75%高速化!!
もちろんUnityプロジェクト内の状況、使用するパソコンによって結果は変わってきますが、Unityエディタの実行までの時間が 圧倒的に高速化 します。
詳しくはこちらの記事で解説していますので、ぜひ確認してみてください。全Unityエンジニアに届けたい設定です。
2.Assemly Definitionの設定
次に紹介するのは Assembly Definitionの設定 です。Assembly Definitionとはあなたが書いたC#スクリプトがビルド時にまとまるファイルの単位です。通常ランタイムで使用するC#スクリプトは「Assembly-CSharp」というアセンブリファイルに固められます。
しかしAssembly Definitionを設定することでアセンブリファイルを分けることができるのです。
アセンブリを分けることでコンパイルの高速化につながります。なぜなら差分のないアセンブリはコンパイルが起きないためです。つまりアセンブリを分割することでコンパイルするC#のコード量が減りコンパイル時間が短縮されるというロジックです。
Assembly Definitionは高速化だけではなくコードの依存関係構築にも利用される技術です。こちらの記事で詳しく解説しているのでぜひ読んでみてください。
3.Unityエディタにホットリロードの導入
Unityでゲーム開発する際はC#スクリプトを記述して機能を実装しますよね。C#のコードを少しでも修正したらUnityエディタではコンパイルが走り待機時間が生まれます。
しかもこの待機時間は開発フェーズが後になればなるほど長くなるため、非常に困ります。
実はスクリプト変更によるコンパイル時間をゼロにする裏技があります。それが 「ホットリロード」 です。
ホットリロードとはUnityエディタでは再生モードのまま変更したC#コードが反映される仕組みです。つまりコンパイルするためにエディットモードに戻ることなく開発を継続することができるのです。
導入方法は簡単で「Hot Reload」をAsset Storeからインポートするだけ。

Hot Reloadを導入すると次のようなウィンドウが表示されます。
「Start」ボタンを押すだけでホットリロードの準備は完了。
上記のような画面になったらホットリロード状態が開始します。「Timeline」にはホットリロードでおきた処理が並ぶため、何が起きたのかを確認できます。
ホットリロード状態になると、本当にC#コードを変更してもコンパイルが発生しなくなります。最初オオバも 「嘘だろ?」 って思いましたが本当でした。
Hot Reloadの注意点
超絶便利なHot Reloadにも注意点があります。
それは 大幅なコード変更にコンパイルが必要 だということです。大幅なコードとあいまいな表現になってしまいますが、ある程度コードを書き換えたらコンパイルが必要だということを確認しています。
この辺りのコード量は実際に使ってみないと感覚が掴めないかもしれません。
Hot Reloadはクオリティアップに必須級のアセット
とはいえHot Reloadはパラメーターをネチネチ調整してブラッシュアップするタイミングでは **絶大な効果を発揮** します。ゲーム開発はネチネチ調整したブラッシュアップの積み重ねでクオリティが大きく変わります。
Hot Reloadの導入をするだけでブラッシュアップ時のコンパイル待機時間ストレスから解放されるなら積極的に入れたいアセットです。ちなみにオオバは個人開発のときHot Reloadを必ず導入しているアセットです。
コンパイル時間に困っている方はぜひ検討してみてください。
ちなみにオオバはSRDebuggerという最強のデバッグアセットも必ず最初に導入します。
【おまけ】運用で少しでもUnity作業の待機時間を短縮する方法
ここからはUnityエディタの使い方を工夫して作業時間を確保する方法を紹介していきます。
そもそもUnityエディタの起動が重いときってありませんか?例えば次のようなタイミングは重くなりがちです。
- 新しいソースコードを取り込んだ時
- 新しいアセットを取り込んだ時
- Switch Platformした時
つまり新規のアセットのインポートに時間は消費していきます。このインポート時間を少しでも回避するための方法を紹介していきます。
なぜインポートに時間が取られるのか?
アセットインポートで時間がかかるのは大きく3つ。
アセットの種類 | 処理内容 | 特に時間がかかる原因 |
---|---|---|
画像(Texture, Sprite) | フォーマット変換・圧縮・MipMap 生成 | 解像度が高い、サイズが大きいと処理が激重 |
3Dモデル(FBX, OBJ) | リグ、アニメーション、マテリアルの処理 | ポリゴン数が多い、アニメーションが長いと時間がかかる |
オーディオ(WAV, MP3, OGG) | 圧縮(Vorbis, AAC)・サンプルレート変換 | 長時間の音声データは特に時間がかかる |
これらのファイルが増えれば増えるほどアセットインポートの時間は伸びていきストレスが膨らんでいくのです。
アセットが各プラットフォームに変換される仕組み
Unityはアセットを各プラットフォーム毎に変換します。例えばテクスチャは次の図のように変換します。
- iOSの場合 : ASTCへ
- Androidの場合 : ASTC(またはETC2)へ
- PC版の場合 : DX5へ
このように各プラットフォームごとにファイル形式は異なります。この変換処理に時間がかかるのです。一度変換が終われば Unity内部で保持(キャッシュ)される ため2度目以降に待たされることはありません。
しかしプラットフォームを切り替えると、再び画像変換処理が始ってしまうわけです。特にゲーム開発では大量の画像を扱うため、「画像の枚数」によってUnityエディタの起動を重くする原因となってしまいます。
こちらの記事ではプラットフォーム切り替え(Switch Platform)をいかに短縮化するかについて考察しています。複数のプラットフォームに対して同時開発している方はぜひ読んで効率化してみてください。
まとめ
本記事では死ぬほど重くなるUnity作業を少しでも高速化させるための方法を紹介してきました。
記事の内容を簡単にまとめます。
①Enter Play Mode Settingの有効化
②Assembly Definitionの設定
③ホットリロードの導入
④Switch Platformの短縮化
以上のテクニックを使って作業時間の捻出を試みてみました。
重いUnityで作業するのってすごくストレスですよね。せっかく良いところまでゲームを作れたのにUnityが重いせいでやる気が無くなってしまってはもったいないです。
Unityエディタの環境を整備して少しでも快適にゲーム開発できるように本記事を参考にしてみてください。
この記事があなたのゲーム開発に役立ったら嬉しいです。

Importing small AssetsでUnityが起動しない時に試す6つの方法
Importing small AssetsでUnityが起動しないときの6つの方法を紹介します。

筆者のXをフォローしよう
「Unity初心者大学」というUnity初心者向けのYouTube始めました!!
ぜひチャンネル登録をお願いします!
最後まで読んでいただきありがとうございました!
すばらしいUnityライフをお過ごしください。
- Unity6000.0.32f1