はじめに
Unityのプロジェクトジョインして環境構築するときに
初回起動に半日とかかかっていたのを改善するお話です。
環境
Unity 2017.4系
CacheServer v6.1
Switch Platformの時間短縮などを調べたときによく出てくる
UnityのPreferencesから
General -> Compress Asset on ImportのチェックをOFF
の設定を行ってました。
問題の切り分け
キャッシュサーバ設定してるのに全然早くならない・・・。
以前のプロジェクトなら下記のようなダイアログが表示されていたが表示されず。
Downloading from cache server.
ログの確認
キャッシュサーバからダウンロードされてるかを調べるためEditor.logを確認したところ
Not caching 'Assets/xxxx/xxxx/xxxx.png' because it was imported in uncompressed asset mode or had an error during import.
done. [Time: 142.273588 ms]
のようなログが吐かれていた。
どうやら無圧縮設定またはエラーが出ていたためにキャッシュサーバへデータの送信がされてなかったようです。
Compress Asset on ImportのチェックをONにしてから
右クリック -> Reimportを行うと
Updating Assets/xxx/xxx/xxx.png - GUID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
[CommitTime: 0.276411 ms] done. [Time: 57.033940 ms] (Uploaded to cache server.)
とキャッシュサーバへアップしたログが出力されます。
キャッシュサーバが効いていることの確認
これでキャッシュが効いて初回起動が早くなるだろうと
Library配下のファイルをすべて削除してUnityの再起動を行ったところ
全然早くならない・・・。
AssetBundle化の対象ファイルが多すぎたので一度対象のディレクトリをリネームし
AssetBundle -> .AssetBundle
のようにリネームしてUnityが認識しないようにして再度Library配下を消して起動しなおしたところ
かなり起動が早いことが確認できた。
キャッシュサーバ以外の原因の調査
インポート時に特定の設定を自動で行うために
AssetPostprocessorを使って処理をしていることが多いと思う。
AssetPostprocessorを通して生成されるファイルもバージョン管理されていたため
初回起動時のみAssetPostprocessorをコメントアウトなどで無効化することで
無駄なファイル処理を行わないようにすることで初回起動が無事早くなった。
まとめ
- Compress Asset on ImportのチェックをONにする
- インポート時処理(AssetPostprocessor)の無効化
今回は上記2点で初回起動を早くするができました。
ある程度の規模のプロジェクトになると環境構築で丸一日潰れたりすると思うので
初回起動を少しでも早くして工数削減しましょう!