18
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Unity]Assetが使われているかどうかを検索するエディタ

Last updated at Posted at 2017-09-05

アプリをリリースする際にアプリサイズを減らすために、
フォルダ整理をしなくてはならないのですが、
アジャイル開発をしていたり、仕分けが適当すぎてどれがいらないものかわかんねー!ってなるので、あると便利かなと思って作りました。

#追記
●こちらにソースコドやら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つあり、「検索モード」「参照モード」「ファイル検索モード」です。

  • 検索モード
スクリーンショット 2017-09-05 16.15.17.png

1、Search Mode をInputに
2、AssetNameに検索したい名前を入れる
3、Found Assets内に表示されたAssetの名前をクリック
4、クリックされたAssetの使用元が検索され表示される

  • 参照モード
スクリーンショット 2017-09-05 16.15.50.png

1、Search Mode をReferに
2、調べたいAssetをProjectビューからドラッグ&ドロップ
3、使用元が検索され表示される

  • フォルダ検索モード

    「フォルダの中からどこからも使用されていないAsset」を抽出します。
スクリーンショット 2017-09-05 16.30.45.png

1、Search Mode をIn Fileに
2、待つ
3、結果が表示される

#終わりに
綺麗なUIとかツールとか作るのって大変ですね。

18
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?