死ぬほど遅いUnity Editorを劇的に速くする6つの方法

どうも、個人ゲーム開発者のゆみねこです。
突然だけど、声高に言いたい。

Unityが! 遅いんじゃ!!!

  • アセットのインポートが遅い。
  • コンパイルが遅い
  • テストプレイの起動が遅い
  • ビルドがあり得ないぐらい遅い

なにをやるにもとにかく遅い。
遅すぎて、待ち時間中にソシャゲを起動してしまう時すらあります。

待ち時間が長すぎてアンガールズ田中化するぼく(イメージ)

そこで、コンパイル・インポート・ビルドの3つにおいて、待ち時間が減る対策方法を書いていきます。

この記事を読めば、もう遅いなんて言えなくなります。

インデックスを無効化する

概要

Windows10では、ファイルやフォルダに自動で検索用のインデックスを作成しています。

アセットをわざわざWindowsから検索することなんて無いので、無効にしましょう。

影響範囲

  • アセットのインポートが速くなる

手順

  1. Unityのプロジェクトが保存されているフォルダを右クリック
  2. 全般」タブ右下の「詳細設定」をクリック
  3. このフォルダー内のファイルに対し、プロパティだけでなくコンテンツにもインデックスを付ける」のチェックを外す
  4. OKを押す

属性変更の確認ダイアログが出てくるので「変更をこのフォルダー、サブフォルダおよびファイルに適用する」にチェックを入れましょう。

ファイルの数が多いと時間がかかりますが、バックグラウンドで進行するので作業に支障はありません。気長に待ちましょう。

内容の圧縮を無効化する

概要

フォルダにこんな青い矢印がついていませんか?

実はこれ、Windowsが自動でファイルを圧縮しているんです。
容量の削減にはなりますが、当然ファイルへの読み書きは遅くなります。

容量とスピードのどちらを取るかはトレードオフですが、現在開発中のプロジェクトだけでも無効化することをおすすめします。

影響範囲

  • コンパイルが速くなる
  • アセットのインポートが速くなる
  • ビルドが速くなる

簡単にできる設定の中では、一番効果を感じました。
特にAddressablesを使っていたり、大規模な開発をしている方には恩恵が大きいはずです。

手順

  1. 対象フォルダを右クリック
  2. 全般」タブの「詳細設定」をクリック
  3. 内容を圧縮してディスク領域を節約する」のチェックを外す
  4. 「OK」を押し、現れたダイアログで 「変更をこのフォルダー、サブフォルダおよびファイルに適用する」 にチェックを入れる
スポンサードサーチ

セキュリティソフトの例外に追加する

概要

セキュリティソフトは、ファイルへのアクセスや追加があるたびに、怪しいものではないか裏でスキャンしています。
(何も入れていなくても、Windows10に標準で備わっています)

大事な機能ではありますが、Unityプロジェクトの中にウイルスが混入することなんてまずないので、フォルダを例外に指定しましょう。

影響範囲

  • アセットのインポートが速くなる
  • コンパイルが速くなる
  • ビルドが速くなる

手順

セキュリティソフトによって異なるので、いくつかリンクを貼っておきます。

載っていないものでも、大体は設定項目のどこかに例外フォルダを指定する項目があるはずです。

テクスチャの圧縮を無効にする

概要

Unity Editorの設定です。
インポート時にテクスチャを自動で圧縮する設定があります。

無効化すると開発時の容量は肥大化しますが、ビルド時に圧縮されるので最終的な容量は変わりません。
必要ないと思ったらオフにしましょう。

影響範囲

  • アセットのインポートが速くなる
  • Switch Platformが速くなる
  • ビルドが遅くなる
  • 開発時の容量が増える

デメリットもあるので注意してください。
上記2つは劇的に速くなります。

手順

Edit」→「Preference」の順に選択します。

General」項目の「Compress Assets on Import」のチェックを外します。

Unity 2018.3以降にアップデートする

概要

Unity 2018.3からC#7.3が使えるようになり、Scriptの変更部分だけをリコンパイルする高速なコンパイラーが使えるようになりました。

2017以前を使っていたり、企業で開発している場合は難しいですが、なるべく2018.3以降にすることをおすすめします。

影響範囲

  • コンパイルが速くなる

手順

2018.3より前の開発プロジェクトの場合は、以下の設定が必要です。

  1. Unity 2018.3以降をインストールし、起動
  2. Edit」→「Project Settings」をクリック
  3. Player」項目の「Other Settings」を開き「Scripting Runtime Version」を「.NET 4.x Equivalent」に変更する。

SSDに換装する

もうSSDを知らない人は少ないかと思います。

一応説明すると、データを保存するためのパソコンの部品です。HDDより耐久性・静音性・読み書き速度に優れています。

全ての待ち時間に劇的な効果があります。

Unityに関係なく、Windowsの起動時間も15秒ぐらいまで縮まりますし、コピーも爆速になります。

物理的なパーツの交換なので多少お金はかかりますが、あり得ないぐらいパソコンが高速化します。
昔は高かったSSDも安価になっているので、開発資金と割り切って購入することをおすすめします。

AmazonでおすすめのSSDを探す

ノートパソコンの場合は換装できないので、思いきって新しいパソコンを買ってしまいましょう。

BTOという、ネット上で自由にパソコンの部品を選んで買えるサービスを使えば、必要最低限の性能に抑えることができます。

選び方のコツですが、基本的に全てにおいて高性能にまとまっているゲーミングPCのカテゴリから選び、CドライブをSSDで選択すれば問題ありません。

特に、メーカー推奨のゲーミングPCは、そのゲームが動作することが保証されているので、作りたいゲームの目安として参考になります。

ちなみに、ぼくは過去にケチりすぎた結果、Unityが3Dで動かないケースに陥り、12万円をドブに捨てました。
メーカー推奨品から選ぶのもコツの1つです。

おまけ

以下は、あまりおすすめしないものや、効果がないものたちを紹介します。

Assembly Definition

効果はあるものの、おすすめしません。

Assembly Definitionとは、Scriptのアセンブリを複数に分割することでコンパイル対象を制限し、高速化を図るものです。

一見すると合理的ですが、しっかり把握してないとコンパイルエラー地獄が発生します。

また、Editor時は問題がなくてもビルド時にゴネるケースも多く、それらの参照関係を解決しているうちに軽く数時間は潰れます。

しかも、それだけ苦労したにも関わらず、コンパイル時間はそこまで改善されません。
実際に計測してみましたが、せいぜい、0.5秒~1秒速まればいいほうです。

アセット販売者やGitHubでライブラリを配布している方向けのもので、ぼくら開発者が自家製のScriptでやるのは避けたほうがいいです。

Unity Incremental Compiler

C#7.3のRoslynを使用した高速なコンパイラーでしたが、2018.3以降に派生バージョンが組み込まれたことで廃止予定です

※一部引用の翻訳

インクリメンタルコンパイラパッケージは非推奨です。
代わりに18.3の組み込みC#コンパイラを使用することをお勧めします。

* 18.3はインクリメンタルコンパイラの類似しているがより堅牢なバージョンと共に出荷されています。
多くのシナリオで、18.3ではC#のコンパイル時に最大5倍のスピードアップが見られます。

* 18.3は、C#7.3で出荷されてあり、当分の間、そうインクリメンタルコンパイラパッケージは必要ありません。これは、それによって得られた大きな利点がUnityの組み込みに統合されているためです。

この技術の重要な部分はすべて18.3にまとめられました。


18.3で得られた最大5倍の利益に加えて、C#のコンパイル時間をさらに改善する方法を現在調査中です。
最終目標は、大規模プロジェクトでC#スクリプトを使用して500msの反復時間を達成することです。

……とのことです。
先ほど紹介したUnity2018.3以降にすれば、Incremental Compilerは不要になるわけですね。

反復時間が何を指すのかよく分かりませんが、0.5秒まで縮めるつもりだというのは楽しみですね。

まとめ

時は金なり。Time is Money.
この記事で待ち時間とのイライラとおさらばし、優雅で意識の高い開発環境を取り戻しましょう。

ちなみにぼくは、Unityに限らず、個人で活動するゲーム開発者向けの情報を、Twitterで日々発信しています(質問にも答えています)。

記事の更新を見逃したくないという人は、ぜひぼくのTwitterをフォローしてもらえると嬉しいです!

記事をシェアする