UnityのAsset参照に関して
Unityで各プラットフォーム用にビルドすると関連するAssetが取り込まれます。
しかし、想定外のAssetが対象になってしまってサイズが肥大化する事があり、どうして対象となるのか調べる術を探していました。(一個ずつ見ていくのは無理…)
非常に参考になったのがこのサイト、本当にありがたいです。
Unityで管理しているAssetには全てguidが振られており、そのguidを保持する事で参照関係を保っているのですね。
まず、ビルドに含まれてしまっているAssetを特定(例えばC.png)し、そのファイルのメタファイル(C.png.meta的なやつ)をテキストエディタで開く。すると「guid: xxxxxxxx」という表記が2行目くらいにあるのでそれをコピー。
UnityプロジェクトのAssetフォルダ以下をgrep等のテキスト検索でサーチすると参照元を割り出す事ができます。(前提条件として、Unityファイルのテキスト出力は必須ですね)
ビルドに含まれる条件として以下が挙げられます(全てではないかもしれません)
・「Build Settings」の「Scenes In Build」でチェックが付いているシーンファイルで参照しているAsset、およびそのAssetが参照しているAsset、およびその・・・
・「Resources」フォルダ以下に入っているAsset、およびそのAssetが参照しているAsset、およびその・・・
要するに、ビルドに含まれてしまっているAssetのguidを参照しているAssetを探して、上記2パターンのどちらかに辿りつくはずなので、参照しないように変える。
例えば resources/A.prefab で参照している B.mat で参照している C.png 、という関係であれば、A.prefabで別のマテリアルを参照させるなど。
著者:t.n