アプリをリリースする際にアプリサイズを減らすために、
フォルダ整理をしなくてはならないのですが、
アジャイル開発をしていたり、仕分けが適当すぎてどれがいらないものかわかんねー!ってなるので、あると便利かなと思って作りました。
#追記
●こちらにソースコドやらUnityパッケージやらがあります。
どうぞご活用ください。
https://github.com/Uroco/CheckAssetDependences
●2019.2.15f1で動作確認済み
●記事のコピペ用のソースコードは削除しました。
#やり方
Assetはそれぞれmetaデータが生成され、そこにつけられているコンポーネントや素材のデータが書かれています。
GUIDというUnity上でAssetを管理するためにつけられる一意の文字列があり、それらが素材名やパスの代わりに使用されmetaデータに保存されています。
調べたいAssetのGUIDを取得し、全AssetからそのGUIDを使用しているAssetを抽出します。
#AssetDatabaseクラス
アセットについていじくるならこのクラスの関数が必須
使ったものについてまとめます。
FindAssetsメソッド
string[] FindAssets(string filter);
string[] FindAssets(string filter, string[] searchInFolders);
アセットを検索するメソッド。戻り値はヒットしたGUIDたちです。
filterには検索する対象を指定することができます。
例)AssetDatabase.FindAssets ("box t:prefab t:material", new string[]{ "Resources/Temp" });
検索結果は「boxの名前を含み prefab もしくは material で、Resources/Temp下にあるもの」
filterはAND条件ではなくOR条件なので、条件を追加すればするほど範囲が拡がってしまいます。
GUIDToAssetPathメソッド
string GUIDToAssetPath(string guid);
GUIDからAssetの相対パスを取得できます。まんま
GetDependenciesメソッド
string[] GetDependencies(string pathName);
string[] GetDependencies(string pathName, bool recursive);
パスを指定したAssetが使用しているAssetのパスを返します。
recursiveは、検索の範囲を指定します。
falseにすると指定したAssetが直接使用しているもののみ返します。
trueは直接でないものも含みます。prefabでいうと、子関係にあるものが使用しているものも含みます。
デフォルトはtrueです。
#エディタの説明
モードが無駄に3つあり、「検索モード」「参照モード」「ファイル検索モード」です。
- 検索モード
1、Search Mode をInputに
2、AssetNameに検索したい名前を入れる
3、Found Assets内に表示されたAssetの名前をクリック
4、クリックされたAssetの使用元が検索され表示される
- 参照モード
1、Search Mode をReferに
2、調べたいAssetをProjectビューからドラッグ&ドロップ
3、使用元が検索され表示される
- フォルダ検索モード
「フォルダの中からどこからも使用されていないAsset」を抽出します。
1、Search Mode をIn Fileに
2、待つ
3、結果が表示される
#終わりに
綺麗なUIとかツールとか作るのって大変ですね。