添加碰撞盒
只需要选择模型的父物体就好了
代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine;
public class AddBox
{
[MenuItem("Tools/一键添加所有碰撞盒")]
private static void SelectionAnchor()
{
if (Selection.activeObject)
{
AddCollider((GameObject)Selection.activeObject);
}
}
public static void AddCollider(GameObject obj)
{
if (obj.transform.childCount > 0)
{
for (int i = 0; i < obj.transform.childCount; i++)
{
Transform child = obj.transform.GetChild(i);
if (child.GetComponent <MeshRenderer>())
{
child.gameObject.AddComponent<MeshCollider>();
}
AddCollider(child.gameObject);
}
}
}
}
删除碰撞盒
代码如下:
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
public class Destory_Box :EditorWindow
{
[MenuItem("Tools/工具:一键清理所有Collider碰撞盒")]
public static void ClearColiderByChild()
{
if (Selection.activeObject)
{
ClearMeshColiderByChild((GameObject)Selection.activeObject);
}
}
public static void ClearMeshColiderByChild(GameObject obj)
{
//1.子物体有Mesh
if (obj.transform.childCount > 0)
{
for (int i = 0; i < obj.transform.childCount; i++)
{
GameObject child = obj.transform.GetChild(i).gameObject;
//MeshCollider meshCollider = child.GetComponent<MeshCollider>();
//if (meshCollider != null)
//{
// DestroyImmediate(meshCollider);
//}
BoxCollider boxCollider = child.GetComponent<BoxCollider>();
if (boxCollider != null)
{
//DestroyImmediate(boxCollider);
Debug.Log(boxCollider.name);
}
ClearMeshColiderByChild(child);
}
}
}
}