Unityエディターの開発プラクティス[モデルインポーター]-複数選択したモデルインポート設定でマテリアルの場所を設定する方法

モデルのインポート設定の[マテリアル]セクションでは、編集のための複数選択はサポートされていません。図に示すように、複数のモデルを選択すると、エディターは、複数選択ではマテリアル編集がサポートされていないことを確認します。

多数のモデルをプロジェクトにインポートする場合、デフォルトの場所は[埋め込みマテリアルを使用]に設定され、[外部マテリアルを使用(レガシー)]に設定する場合は、モデルを選択して場所を順番に設定する必要があります。これは時間と労力を要します。

この記事で実装されているツールは、次の図に示すように、マテリアルの場所の設定で複数の選択モデルをサポートできます。

コードは次のように表示されます。

using UnityEngine;
using UnityEditor;

namespace SK.Framework
{
    public class ModelImportSettings : EditorWindow
    {
        private ModelImporterMaterialLocation location;

        [MenuItem("SKFramework/Tools/Model Import Settings")]
        private static void Open()
        {
            GetWindow<ModelImportSettings>("Model Import Settings").Show();
        }

        private void OnGUI()
        {
            GUILayout.BeginHorizontal();
            {
                GUILayout.Label("Location");
                location = (ModelImporterMaterialLocation)EditorGUILayout.EnumPopup(location);
            }
            GUILayout.EndHorizontal();

            if (Selection.gameObjects.Length == 0) return;
            GUILayout.FlexibleSpace();

            if (GUILayout.Button("Apply"))
            {
                for (int i = 0; i < Selection.gameObjects.Length; i++)
                {
                    var obj = Selection.gameObjects[i];
                    string path = AssetDatabase.GetAssetPath(obj);
                    ModelImporter importer = AssetImporter.GetAtPath(path) as ModelImporter;
                    if (importer != null)
                    {
                        importer.materialLocation = location;
                    }
                }
            }
        }

        private void OnSelectionChange()
        {
            Repaint();
        }
    }
}

 

  パブリックアカウント「ContemporaryWildProgrammer」へようこそ

おすすめ

転載: blog.csdn.net/qq_42139931/article/details/123656770