C# 如何获取添加到层次中所有模型和对象的所有网格碰撞器组件?
为了添加它们,我在层次结构中标记并选择了所有模型和对象,然后在菜单中我做了组件>物理>网格碰撞器 但是现在我想删除/删除我添加的所有网格碰撞器。 但我想用一个脚本 我想要的是在数组中列出或列出所有网格碰撞器,然后决定如果要删除重命名或其他任何操作,如何处理每个碰撞器C# 如何获取添加到层次中所有模型和对象的所有网格碰撞器组件?,c#,unity3d,C#,Unity3d,为了添加它们,我在层次结构中标记并选择了所有模型和对象,然后在菜单中我做了组件>物理>网格碰撞器 但是现在我想删除/删除我添加的所有网格碰撞器。 但我想用一个脚本 我想要的是在数组中列出或列出所有网格碰撞器,然后决定如果要删除重命名或其他任何操作,如何处理每个碰撞器 GameObject.FindObjectsOfType(typeof(MonoBehaviour)); //returns Object[] GameObject.FindGameObjectsWithTag("Untagged"
GameObject.FindObjectsOfType(typeof(MonoBehaviour)); //returns Object[]
GameObject.FindGameObjectsWithTag("Untagged"); //returns GameObject[]
这将返回所有游戏对象,但这不是我需要的。使用
FindObjectsOfType
:
要使用带有FindObjectsOfType
的MeshCollider查找,请提供MeshCollider
作为类型。将其转换为MeshCollider
数组
MeshCollider[] allMeshes = GameObject.FindObjectsOfType(typeof(MeshCollider)) as MeshCollider[];
for (int i = 0; i < allMeshes.Length; i++)
{
allMeshes[i].enabled = false; //Optional
Destroy(allMeshes[i]);
}
这回答了你的问题吗?如果是这样,你可以接受它作为答案。谢谢
GameObject[] tempObj = GameObject.FindGameObjectsWithTag("Untagged") as GameObject[];
MeshCollider[] allMeshes = new MeshCollider[tempObj.Length];
for (int i = 0; i < allMeshes.Length; i++)
{
allMeshes[i] = tempObj[i].GetComponent<MeshCollider>();
if (allMeshes[i] != null)
{
allMeshes[i].enabled = false; //Optional
Destroy(allMeshes[i]);
}
}