using UnityEngine; using UnityEditor; using UnityEditor.SceneManagement; public class ColliderRemoverTool { [MenuItem("Tools/Remove All Colliders in Scene")] private static void RemoveAllColliders() { // 记录操作以支持撤销 Undo.SetCurrentGroupName("Remove All Colliders"); int undoGroup = Undo.GetCurrentGroup(); int count = 0; // 移除 3D 碰撞体 Collider[] colliders = Object.FindObjectsByType(FindObjectsSortMode.None); foreach (Collider collider in colliders) { Undo.DestroyObjectImmediate(collider); count++; } // 移除 2D 碰撞体 Collider2D[] colliders2D = Object.FindObjectsByType(FindObjectsSortMode.None); foreach (Collider2D collider in colliders2D) { Undo.DestroyObjectImmediate(collider); count++; } Undo.CollapseUndoOperations(undoGroup); Debug.Log($"已移除 {count} 个碰撞体组件"); // 标记场景为已修改 EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); } }