時雨に舞う

プログラミングや技術情報などの備忘録

UnityのAsset参照に関して

Unityで各プラットフォーム用にビルドすると関連するAssetが取り込まれます。

しかし、想定外のAssetが対象になってしまってサイズが肥大化する事があり、どうして対象となるのか調べる術を探していました。(一個ずつ見ていくのは無理…)

 

非常に参考になったのがこのサイト、本当にありがたいです。

esakun.hateblo.jp

 

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