47 lines
2.0 KiB
C#
47 lines
2.0 KiB
C#
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} префабах.");
|
||
}
|
||
} |