Unityエディター開発コンバット[エディターウィンドウ]-リプレースメント

図のように、シーン内に多数のモデルがきれいに配置されている場合、モデルを変更して交換する必要がある場合、上記の位置で新しいモデルを1つずつ交換するのは面倒です。以下に紹介するツールReplacerは、バッチ交換に非常に便利です。

[階層]ウィンドウで置換するすべてのモデルを選択し、置換するモデルを指定して、[置換]をクリックして置換します

ツールコードは次のとおりです。

using UnityEditor;
using UnityEngine;

namespace SK.Framework
{
    /// <summary>
    /// 替换器
    /// </summary>
    public class Replacer : EditorWindow
    {
        [MenuItem("SKFramework/Replacer")]
        public static void Open()
        {
            var window = GetWindow<Replacer>("Replacer");
            window.maxSize = new Vector2(300f, 60f);
            window.minSize = new Vector2(300f, 60f);
            window.Show();
        }

        private GameObject target;

        private void OnGUI()
        {
            int count = Selection.gameObjects.Length;
            GUILayout.Label(string.Format("Count: {0}", count));

            GUILayout.BeginHorizontal();
            GUILayout.Label("Replacer:", GUILayout.Width(100f));
            target = EditorGUILayout.ObjectField(target, typeof(GameObject), true) as GameObject;
            GUILayout.EndHorizontal();

            GUI.enabled = target != null;
            if (GUILayout.Button("Replace"))
            {
                if (EditorUtility.DisplayDialog("提醒", string.Format("将使用{0}替换所有选中的物体,是否确认?", target.name), "确认", "取消"))
                {
                    for (int i = 0; i < Selection.gameObjects.Length; i++)
                    {
                        var go = Selection.gameObjects[i];
                        var instance = Instantiate(target);
                        instance.transform.position = go.transform.position;
                        instance.transform.rotation = go.transform.rotation;
                        instance.transform.SetParent(go.transform.parent);
                        DestroyImmediate(go.gameObject);
                        i--;
                    }
                }
            }
        }

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

おすすめ

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