条件:
1,选择物体名字都包含的内容
2,带有碰撞属性
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif
public class RemoveCollider : ScriptableWizard
{
//定义菜单的路径
[MenuItem("DCCTools/Collider/RemoveCollider")]
static void CreateWizardTwo()
{
DisplayWizard<RemoveCollider>("移除碰撞", "确定");
}
[Header("物体信息")]
[InspectorShow("选择物体名字包含的内容")]
public List<string> preNameList = new List<string>();
[InspectorShow("选择碰撞类型")]
public ColliderType m_ColliderType = ColliderType.box;
private void OnWizardCreate()
{
GameObject[] Prefabs = Selection.gameObjects;
foreach (GameObject go in Prefabs)
{
for (int i = 0; i < preNameList.Count; i++)
{
EachObjectRemoveCollider(go, preNameList[i]);
}
}
}
private void OnWizardUpdate()
{
helpString = "";
errorString = "";
string Name = "";
if (Selection.gameObjects.Length > 0)
{
GameObject[] Prefabs = Selection.gameObjects;
foreach (GameObject go in Prefabs)
{
Name += go.name + "、";
}
helpString = "当前选择了" + Name + "物体";
}
else
{
errorString = "请选择物体";
}
}
//选择的物体改变的时候调用
private void OnSelectionChange()
{
OnWizardUpdate();
}
void EachObjectRemoveCollider(GameObject go, string preName)
{
if (go.name.Contains(preName))
{
if (go.GetComponent<MeshRenderer>())
if (go.GetComponent<Collider>())
{
RemoveColliderComponenet(go);
}
}
Transform[] m_childTransformArray = go.GetComponentsInChildren<Transform>();
if (m_childTransformArray.Length >= 1)
{
for (int i = 0; i < m_childTransformArray.Length; i++)
{
GameObject m_obj = m_childTransformArray[i].gameObject;
if (m_childTransformArray[i].name.Contains(preName))
{
if (m_obj.GetComponent<Collider>())
{
RemoveColliderComponenet(m_obj);
}
}
}
}
}
void RemoveColliderComponenet( GameObject obj)
{
MeshCollider m_MeshCollider = obj.GetComponent<MeshCollider>();
if (m_MeshCollider != null)
{
//编辑模式下移除组件
DestroyImmediate(m_MeshCollider);
}
BoxCollider m_BoxCollider = obj.GetComponent<BoxCollider>();
if (m_BoxCollider != null)
{
DestroyImmediate(m_BoxCollider);
}
}
}
路过大神指点:当修改完之后,无法自动保存,很头疼,(有时候改完之后没注意,关闭下次打开,发现没起作用。。头疼)