SummerGame/Assets/_Project/Scripts/Editor/ColliderFitter.cs

47 lines
2.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using UnityEngine;
using UnityEditor;
public class ColliderFitter : Editor
{
// Насколько увеличиваем? (0.02f = 2 сантиметра во все стороны)
private const float Padding = 0.02f;
[MenuItem("Tools/Увеличить коллайдеры (На кропаль)")]
public static void InflateColliders()
{
int count = 0;
// Берем все объекты, которые вы выделили мышкой
foreach (GameObject obj in Selection.gameObjects)
{
// Проверяем, что это файл в папке (префаб), а не объект на сцене
string assetPath = AssetDatabase.GetAssetPath(obj);
if (string.IsNullOrEmpty(assetPath)) continue;
// Безопасный режим редактирования префабов (в Unity 6 это стандарт)
using (var editingScope = new PrefabUtility.EditPrefabContentsScope(assetPath))
{
GameObject prefabRoot = editingScope.prefabContentsRoot;
// Ищем все BoxCollider'ы на префабе (даже в дочерних объектах)
BoxCollider[] colliders = prefabRoot.GetComponentsInChildren<BoxCollider>();
bool modified = false;
foreach (BoxCollider box in colliders)
{
// Увеличиваем размер
box.size += new Vector3(Padding, Padding, Padding);
modified = true;
}
if (modified)
{
count++;
}
}
// При выходе из блока using Unity сама сохраняет префаб
}
Debug.Log($"<color=cyan>Готово!</color> Увеличены коллайдеры на {count} префабах.");
}
}