見出し画像

UnityでFBXインポートする時のマテリアル情報を一括でNoneにする

背景モデラーの私が建物アセット作るのに、2-3桁数のFBXファイルをUnityに放り込む際、埋め込まれたマテリアルの情報がすっごい邪魔なのでして。

デフォルトの状態だと、FBX内部に埋め込まれたマテリアル情報(使えない)が出るのですが、これがモデルに自作のマテリアルを割り当てるときに使うマテリアル選択ウィンドウを埋め尽くしてしまいます。同じ名前見た目のマテリアルが数百個も…(最悪エディタが固まります。)

手っ取り早く阻止するには
インポート情報「マテリアル作成モード」[なし(none)」にすればいいのですが、Unity2018から複数ファイルを一括でNoneに変更できなくなりまして、まあ不便してました。
ファイル一つずつ手動で設定して適用を押してを数百回ですよ…


本当に困る

一括設定する方法、デフォルトのインポート設定を編集する方法を検索しても、探し方が悪いのか同じ苦労してる人いないのか見つからず…

ここの記事をヒントに、一括設定処理を自作しました。
https://gist.github.com/keijiro/fde84ff347a6747bcf6b

https://docs.unity3d.com/ScriptReference/ModelImporter.html

FBXinportMaterialModer.cs

using UnityEngine;
using UnityEditor;
using System.Collections;

namespace FUNSET
{
    public class FBXinportMaterialModer : MonoBehaviour
    {
        static void SetMatModeNoone(ModelImporter importer)
        {
            
            importer.materialImportMode = ModelImporterMaterialImportMode.None;
        }

      

        [MenuItem("Assets/Set FBX ImportMaterialNone")]
        static void SetMatModeNone()
        {
            var filtered = Selection.GetFiltered(typeof(GameObject), SelectionMode.Assets);
            foreach (var go in filtered)
            {
                var path = AssetDatabase.GetAssetPath(go);
                var importer = AssetImporter.GetAtPath(path);
                SetMatModeNoone(importer as ModelImporter);
                AssetDatabase.ImportAsset(path);
            }
            Selection.activeObject = null;
        }
    }
}

使い方は、(なるべく)Editorフォルダ作ってその中にこのFBXinportMaterialModer.csを作り、
プロジェクトにインポートしたfbxを複数選択してからマウス右メニューからSet FBX ImportMaterialNoneを実行。
大量のモデルを扱う3Dゲームプロジェクトかアセットクリエイターなら役立つかも?
また応用で、さまざまなファイルのインポート時の状態を望みの設定に一括編集できるでしょう。

(エディタ拡張は自信がないので、使い終わったらスクリプトは削除したほうがいいかもしれません)

私がUnityストアで販売してる自作建物アセットはこんなんです。


この記事が気に入ったらサポートをしてみませんか?