You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity:如何通过编辑器脚本移除LOD及对应游戏对象

Unity LODGroup配置及关联对象批量清除实现方案

实现逻辑

  • 首先获取选中对象挂载的LODGroup组件
  • 遍历所有LOD配置,收集每个LOD关联的渲染器对应的游戏对象
  • 先清空LODGroup的配置数据,再统一删除收集到的关联游戏对象
  • 全程使用Unity内置的Undo接口记录操作,支持撤销还原

完整代码

以下为编辑器脚本,必须放置在项目的Editor文件夹下才能正常运行:

using UnityEditor;
using UnityEngine;
using System.Linq;

public class LODCleaner
{
    [MenuItem("Tools/清除LOD配置及对应对象")]
    public static void CleanLODAndObjects()
    {
        GameObject selectedGo = Selection.activeGameObject;
        if (selectedGo == null)
        {
            EditorUtility.DisplayDialog("提示", "请先选中带LODGroup组件的对象", "确定");
            return;
        }

        LODGroup lodGroup = selectedGo.GetComponent<LODGroup>();
        if (lodGroup == null)
        {
            EditorUtility.DisplayDialog("提示", "选中的对象没有LODGroup组件", "确定");
            return;
        }

        // 收集所有LOD关联的游戏对象
        LOD[] lods = lodGroup.GetLODs();
        GameObject[] objectsToDelete = new GameObject[lods.Sum(l => l.renderers.Length)];
        int validCount = 0;
        foreach (LOD lod in lods)
        {
            foreach (Renderer renderer in lod.renderers)
            {
                if (renderer != null)
                {
                    objectsToDelete[validCount++] = renderer.gameObject;
                }
            }
        }

        // 记录操作支持撤销
        Undo.RecordObject(lodGroup, "清空LOD配置");
        // 清空LOD配置
        lodGroup.SetLODs(new LOD[0]);
        lodGroup.RecalculateBounds();

        // 删除关联对象
        for (int i = 0; i < validCount; i++)
        {
            if (objectsToDelete[i] != null)
            {
                Undo.DestroyObjectImmediate(objectsToDelete[i]);
            }
        }

        EditorUtility.DisplayDialog("完成", $"已清空LOD配置并删除{validCount}个关联对象", "确定");
    }
}

使用方法

  • 将上述脚本保存到项目Editor目录下,无该目录可手动创建
  • 在Hierarchy面板选中挂载了LODGroup组件的目标对象
  • 点击Unity顶部菜单栏Tools/清除LOD配置及对应对象即可执行操作

注意事项

  • 操作支持撤销,执行后按下Ctrl+Z(macOS为Command+Z)即可还原所有修改
  • 仅删除当前LODGroup配置中绑定的渲染对象,不会影响未关联的其他子对象
  • 若选中对象未挂载LODGroup组件,脚本会弹出提示终止操作

内容的提问来源于stack exchange,提问作者Bhaskar-kumar-arya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 17:30:06