Unity

Unityのマテリアルで使われていないプロパティを削除するツール

Unityのマテリアルで使われていないプロパティを削除するツール

Unityのマテリアルではシェーダを切り替えた時に以前のシェーダのプロパティがそのまま残っています。

残念な事に使われていないプロパティをビルド時に削除してくれるわけではなさそうです。

不要なプロパティを削除するツールを公開しておいたので、気になる方は使ってみて下さい。

ダウンロード

GitHubよりダウンロードできます

使い方

マテリアルを右クリックして「Material Cleaner」を選択すればOKです。

Projectビューの検索窓に「t:material」と入れるとプロジェクト内のマテリアルを全て表示できるので、こちらを使えばまとめて実行できます。

1.t:materialを入力 2.全て選択し、右クリックメニューから「Material Cleaner」を実行

プロパティが残っている理由

そもそもなぜプロパティが残っているのかというと、元のシェーダに戻した時にプロパティを復元できるようにするためです。

これ自体は便利なのですが、何度もシェーダを切り替えているとプロパティが蓄積してしまい無視できないサイズになります。

特にデフォルトで選択されているStandardシェーダのプロパティは他のシェーダに切り替えたらもう使わないのに必ず残ってしまいます。

今回作成したツールはマテリアルを右クリックして実行するタイプですが、メリットだけ享受したい人はビルドにフックしてプロパティの削除を実行して、ビルドが終わったら元に戻すのがいいかもしれません。

効果

Standardシェーダのプロパティが消えるだけでファイルサイズが1KB程度減ります(HDRP・LWRPなどを使用していないケース)。

また、Androidのアセットバンドルをビルドしてみた結果としては、200Bほどファイルサイズが減っていました。

小さい差ではありますが、塵も積もればなんとやらですね。

変更前のシェーダが参照しているテクスチャがメモリプロファイラに載ってしまうこともあるようです。

メモリ上での変化までは検証していないのですが、ファイルサイズを削減できるという点だけでも不要なプロパティを削除しておく価値があると思ったので削除するようにしています!