タイトルの通りです。
UnityのAssetStoreは凄いのですが、調子に乗って色々と入れるとビルド時間やコンパイル時間が凄い事になります。gitのコミット時間もプルの時間も超伸びます。
なので、ゲームの進行に必要のないファイルは全部消すアセットを試作してます。
プロジェクトから未使用アセットを削除する奴の途中経過。使用されないアセット群を一括で消す。空になったフォルダも削除する。シーン・プレハブ・コードから参照のないソースコードも削除する。削除する前にバックアップを取る。 #unity pic.twitter.com/tPKGyfpDJq
— 椿 (@tsubaki_t1) 2015, 7月 14
機能
機能としてはシンプルで、ゲームに含まれるシーン及びResourcesからどうがんばっても参照されないアセット(オーディオ・テクスチャ・マテリアル・モデル・アニメーション・アニメーター・プレハブ・他)を削除します。いちおう削除前にunitypackageにバックアップする機能も付いてるので、あとで入れなおす事も出来ます。
ついでに、ゲームが使用していないコードも削除します。正確には、ゲームに含まれるシーンが参照していないコンポーネント及びクラス及びコンポーネントを参照しているエディタ拡張…が記述されているソースコードを見つけ出して削除します。
たぶん近いうちにAssetStore辺りに公開出来たらいいなあ
問題
現在発生している不思議な現象で、プロジェクトをクリーンナップ後にUnityエディタを再起動してSync Monodevelop Projectを実行しないとMonodevelopが異常と思えるほど重くなる現象を確認しています。
あとコード解析が若干不安な所があるので、むしろオミットした方が安定する疑惑もあったりします。テクスチャやオーディオ消すだけでかなりビルド時間は短縮されるので、ソレはソレで良いのですが、悩ましい。
AssetBundleからの参照はまだ考えてませんが、Unity 5の基本ルールに従って作ってるなら割と簡単に作れそう。
UIはもう少ししたら考えます。
unitypackageのアンインストール
Unitypackage uninstaller #unity pic.twitter.com/JlQOSawZuE
— 椿 (@tsubaki_t1) 2015, 7月 16
それの過程で思いついてやってみたのが、Unitypackageのアンインストールです。単純に指定のUnitypackageがインストールしたファイルを全部削除する訳ですが、用途としては微妙かと思ってましたが、不要なエディタ拡張やサンプルを一時的に展開しunitypackageに戻す…といったフロー割とアリなんじゃないかと思い直しました。