UNITY一键去除加载的场景中LOD组件

Yun 发布于 2025-11-06 189 次阅读


步骤 1:创建 Editor 脚本

在你的项目中,创建一个文件夹 Editor(必须叫这个名字,Unity 会自动识别为编辑器脚本目录),然后在里面新建一个 C# 脚本,例如 RemoveLODGroups.cs。

步骤 2:粘贴以下代码

using UnityEngine;
using UnityEditor;
using System.Collections.Generic;

public class RemoveLODGroups
{
    [MenuItem("Tools/Remove All LODGroups in Scene")]
    static void RemoveAllLODGroupsInScene()
    {
        // 获取场景中所有带有 LODGroup 组件的 GameObject
        LODGroup[] lodGroups = Object.FindObjectsByType<LODGroup>(FindObjectsSortMode.None);

        if (lodGroups.Length == 0)
        {
            Debug.Log("场景中没有找到 LODGroup 组件。");
            return;
        }

        List<Object> objectsToDestroy = new List<Object>();

        foreach (LODGroup lod in lodGroups)
        {
            if (lod != null)
            {
                objectsToDestroy.Add(lod);
            }
        }

        // 使用 Undo.RecordObjects 支持撤销操作(可选)
        Undo.RecordObjects(objectsToDestroy.ToArray(), "Remove LODGroups");

        // 销毁所有 LODGroup 组件
        foreach (Object obj in objectsToDestroy)
        {
            Object.DestroyImmediate(obj, true); // true 表示允许销毁 Asset(但 LODGroup 是组件,不是 asset)
        }

        Debug.Log($"已成功移除 {objectsToDestroy.Count} 个 LODGroup 组件。");
    }
}

步骤 3:运行脚本

  1. 保存脚本。
  2. 在 Unity 编辑器顶部菜单栏,点击 Tools → Remove All LODGroups in Scene
  3. 所有当前激活场景中的 LODGroup 组件会被立即删除。
  4. 操作支持 Ctrl+Z 撤销(因为用了 Undo.RecordObjects)。

最后更新于 2025-11-13