AddCollider.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class AddCollider : MonoBehaviour {
  5. [ContextMenu("添加Collider")]
  6. public void Menu()
  7. {
  8. Debug.Log("11");
  9. AddColliderToMesh(this.transform);
  10. }
  11. [ContextMenu("移除Collider")]
  12. public void RemoveMenu()
  13. {
  14. Debug.Log("22");
  15. RemoveColliderToMesh(this.transform);
  16. }
  17. public void AddColliderToMesh(Transform tra)
  18. {
  19. if (tra.childCount >= 0)
  20. {
  21. for (int i = 0; i < tra.childCount; i++)
  22. {
  23. Transform temp = tra.GetChild(i);
  24. if (temp.GetComponent<MeshRenderer>() != null)
  25. {
  26. temp.gameObject.AddComponent<MeshCollider>();
  27. }
  28. AddColliderToMesh(temp);
  29. }
  30. }
  31. }
  32. public void RemoveColliderToMesh(Transform tra)
  33. {
  34. if (tra.childCount >= 0)
  35. {
  36. for (int i = 0; i < tra.childCount; i++)
  37. {
  38. Transform temp = tra.GetChild(i);
  39. if (temp.GetComponent<MeshRenderer>() != null && temp.GetComponent<MeshCollider>() != null)
  40. {
  41. DestroyImmediate(temp.GetComponent<MeshCollider>());
  42. }
  43. RemoveColliderToMesh(temp);
  44. }
  45. }
  46. }
  47. }