VRChat のアバター改変用 Unity プロジェクトから、どのアバターからも参照されていない未使用アセット(買ったまま着せていない衣装、試して外した髪型、使わなかったテクスチャなど)を検出し、安全に退避してディスク容量を取り戻す Unity Editor 拡張です。
削除ではなく「退避」が既定です。 退避したアセットはプロジェクトルート直下のフォルダへ移動されるだけで、いつでも元に戻せます。誤検出でデータを失わないことを最優先に設計しています。
| 項目 | 要件 |
|---|---|
| Unity | 2022.3 (LTS) |
| VRChat SDK | Avatars 3.7.0 以上(アバターの自動検出に使用。無くても手動指定で動作) |
| OS | 全機能: Windows。キャッシュ掃除機能のみ Windows 専用 |
導入すると Unity のメニューに Tools > いらないアセット消しちゃうもんネーター が追加されます。
ツールは Tools > いらないアセット消しちゃうもんネーター で開きます。ウィンドウは5つのタブに分かれています。
このツールは「登録したアバターから辿れる(=使われている)アセット」以外を未使用候補とみなします。ここでアバターを取りこぼすと、使用中のアセットを誤って未使用と判定します。 まず最初に設定してください。
.prefab / .unity(シーン)を含むフォルダを、ドラッグ&ドロップまたは「フォルダを選択して追加」で登録します。フォルダ内は再帰的に走査されます。VRCAvatarDescriptor を持つ Prefab を自動で探します。チェックを外すと個別に除外できます。Resources/ Editor Default Resources/ StreamingAssets/ 配下、Build Settings に登録されたシーン、Assets/ 直下の .asset。アバターの起点(Prefab / シーン)が1つも無い状態ではスキャンできません(全アセットが削除候補になり危険なため)。
上記の「参照が無くても使用中として扱われるもの」を暗黙ルートと呼びます。「暗黙ルート」を開いて「暗黙ルートを調べる」を押すと、一覧を確認でき、チェックを外して個別に起点から除外できます。
これが要るのは、たとえば次のような場合です。衣装変換ツールなどが Assets/ 直下に設定アセットを作り、その中に「最後に変換した衣装」への参照を持っていることがあります。するとツールの入力欄に残っている値がスキャンの起点になり、その衣装はもう使っていなくても、いつまでも「使用中」と判定されます。心当たりがあれば、その設定アセットのチェックを外してください。
既定ではすべて起点として扱われます。本当に必要な設定アセットを起点から外すと、そこからしか参照されていないアセットが誤って候補に出るため、外すかどうかは自分で判断してください。
参照グラフで追いきれないツール・シェーダー・コード資産などを、退避対象から自動的に除外します。判定に迷うものは消さずに保護する方針です。
.cs / .asmdef / .dll / シェーダー(.shader 等)/ package.json を含むフォルダ、Editor/ を持つフォルダ、既知ツール名(VRCSDK, lilToon, Poiyomi, Modular Avatar, NDMF, VRCFury など)を含むパス、特定拡張子。Assets/MyTools/** のような glob パターンで、保護したいフォルダを自分で追加できます。スキャン結果の各行の「保護に追加」からもワンクリックで登録できます。スキャン結果には**「保護された単位」**の一覧があり(既定は折り畳み)、どのフォルダがなぜ保護されたのかを理由つきで確認できます。候補が0件のときにも表示されます。 「未使用のはずなのに候補に出てこない」というときは、まずここを開いてください。
.unitypackage も書き出します(もう一段の保険)。_UnusedAssets_日時/ へ、.meta ごと移動されます。衣装変換ツールなどには、ツール本体(スクリプトや DLL)と、変換して作った生成物を同じフォルダに置くものがあります。このツールはコードを含むフォルダを丸ごと保護するため、生成物がどのアバターにも使われていなくても、巻き添えで保護されて候補に出てきません。 生成物は変換のたびに積み上がるので、これでは掃除できません。
そこで、その出力フォルダ(例: Assets/なんとかツール/Outputs)を登録すると、中身をツール本体と切り離して判定し、未使用の生成物が候補に出るようになります。
これは「保護を外す」設定ではありません。 ツール本体は登録後も保護されたままです。出力フォルダの中にスクリプトやシェーダーが入っていれば、それも従来どおり保護されます。
変換ツールの生成物は、変換元のマテリアルやテクスチャをそのまま共有していることがあります。この場合、変換元だけを退避して生成物を残すと、残った生成物が参照切れになります。
そこで、互いに参照し合っている候補はひとまとまりで表示され、まとめて選択されます。 グループ内のどれか1つにチェックを入れると、残りにも入ります。一部だけを退避することはできません。
逆に、変換後の衣装をアバターに着せている場合、変換元のマテリアルは本当に使用中です。この場合は変換元のフォルダは「使用中」として保護され、候補に出ません。「変換したから元の衣装フォルダは丸ごと消せる」とは限りません。
退避した結果、中身が空になった親フォルダは Assets/ に残しません。 Assets/ 直下が空の抜け殻で散らかるのを防ぐためです。畳んだフォルダも退避フォルダへ送られるので、復元すれば元どおり(フォルダの GUID も保たれます)。畳まれる数は退避前の確認ダイアログに表示されます。
退避後は Console に Missing 参照の警告が出ていないか確認してください。 問題があれば下記の復元で戻せます。
プロジェクト直下の _UnusedAssets_… フォルダは自動で検出され、一覧表示されます。 スキャンを実行しなくても、退避日時・件数・サイズを見ながら操作できます(退避したまま Unity を再起動しても、ここから戻せます)。
.meta ごと戻すので参照も復活します。退避フォルダを別の場所へ移動した場合は、「退避フォルダを選んで復元」から手動で選ぶこともできます。
Assets/ 配下を SHA-256 で照合し、内容が完全に一致するファイルを検出します。複数の配布物が同じシェーダーやテクスチャを同梱している場合などに見つかります。
アセットを退避しても Library/ 配下のキャッシュは縮みません。ここを全削除すると容量を大きく取り戻せる場合があります。ただしデータではなく「時間」を失う操作です。
⚠️ 削除後、次回 Unity 起動時に全アセットの再インポートが発生し、プロジェクト規模により数分〜数十分(それ以上のことも)かかります。 Assets が大きいプロジェクトほど時間がかかります。「一瞬で終わる」操作ではありません。
Unity 実行中は Library/ を直接消せないため、次の流れになります。
Library/ Temp/ などを削除します。手作業は不要です。clean-cache.bat を生成できます。Unity を完全に終了してから手動実行してください。Library/ Temp/ obj/ .vs/(任意で Logs/)と *.csproj / *.sln。Assets/ Packages/ ProjectSettings/ には一切触れません。推奨タイミング: 作業終了時・離席前・就寝前など、しばらく Unity を使わないときに実行してください。
.meta ごと移動するので、戻せば参照も復活します。設定は Assets/zzz_pytr/Asset-Keshichaumon-Nator/Settings.asset に保存されます。めったに開かないフォルダなので、Project ウィンドウの末尾側に並ぶ名前にしてあります。
0.3.0 以前からアップグレードした場合、旧パス(
Assets/Asset-Keshichaumon-Nator/)の設定は初回起動時に自動で移行されます。 登録内容はそのまま引き継がれ、空になった旧フォルダは削除されます。
MIT License. 詳細は LICENSE を参照してください。
net.maaaaa.asset-keshichaumon-nator
Undefined
0.3.2 (Changelog)
2022.3 or later
No dependencies
No legacy packages