【Unity】MaterialLocation.External is obsolete の警告を消す方法(URP対応)

スポンサーリンク
Unity
スポンサーリンク

前書き

[Worker1] MaterialLocation.External is obsolete. External Material Location is no longer supported. (Assets/Mini Legions Fantasy Polyart/Mini Legion Human/Meshes/Griffin_Default.fbx)

今回、自分の環境でUnityを6.3から6.4にアップデートを行ったところ上記の警告が大量発生しました。今回はこの警告の原因と解決方法をまとめていきます。

原因

MaterialLocation.External is obsolete.
External Material Location is no longer supported.

簡単に訳すと

 ・MaterialLocation.External は廃止された(obsolete)
 ・External(外部配置)はもうサポートされない

ということで、結論から言うと

古いマテリアル管理方式(External)が廃止されたため警告が発生していました。

昔のUnityでは「マテリアルを外部フォルダに配置する」仕組みがありましたが、

現在は非推奨(obsolete)になっています

公式リリースノートを見ると以下のように「ModelImporterMaterialLocation.External is obsolete.」とありました。

解決方法(今回自分がやったこと)

① 警告が出ているFBXを選択

Projectビューで対象のFBXを選択

②InspectorのMaterialsタブを開く

③ Material Creation Modeの設定を変更

NoneになっているのをImport via MaterialDescriptionに変更

Meterials_1
Meterials_2

④ Applyを押す

⑤ Unityを再起動

これで警告が消えました。

実際の挙動

今回の環境では

  • FBXを1つだけ修正
  • Unity再起動

なぜか他のFBXの警告も全部消えました

なぜこれで直ったのか

今回変更した Import via MaterialDescription というのは FBX内の情報を元に、Unity側でマテリアルを再構築する仕組み になります。

ModelImporterMaterialImportMode-ImportViaMaterialDescription - Unity スクリプトリファレンス
Enables the PreprocessMaterialDescription AssetPostprocessor on the current importer.

今回変更した Import via MaterialDescription というのは、
FBX内のマテリアル情報(テクスチャ・色・各種プロパティ)を一度「MaterialDescription」として取得し、Unity側でマテリアルを生成する仕組みになります。

つまり

FBXのマテリアルをそのまま使うのではなく、Unity側で再構築する方式です。

その結果

旧来のExternal設定に依存しなくなるため、警告が出なくなったと考えています。

※そのため厳密にはExternalの設定を直接修正したわけではなく、新しい仕組みに切り替えたことで結果的に警告が回避されています。

Unity - Manual: Materials tab

なぜ全部消えたのか(推測)

これは推測になるのですが、

  • Unity再起動時にアセットの再インポートが実行される
  • ModelImporterの設定が更新される
  • 古いMaterial設定がまとめて無効化される

その結果、他のFBXも含めて正常な状態に更新された可能性があります。(あくまで推測ですが…)

まとめ

今回の対応はこれだけ

  • Material Creation Mode を変更
  • Apply
  • Unity再起動

これだけで警告は解消できました。

今回のポイントとしては

External(旧マテリアル管理方式)が廃止されたこと

そして

新しいマテリアル生成方式に切り替えることで回避できた

という点です。

Unityのバージョンアップ時にはこういった“地味にハマる警告”が出がちなので、同じように困っている方の参考になれば幸いです。

コメント

タイトルとURLをコピーしました