RetrieveMaterialTool.cs 994 B

1234567891011121314151617181920212223242526272829303132333435
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using Sirenix.OdinInspector;
  5. using System.Linq;
  6. public class RetrieveMaterialTool : MonoBehaviour
  7. {
  8. public Transform orginTran;
  9. public Transform tragetTran;
  10. /// <summary>
  11. /// 找回材质球
  12. /// </summary>
  13. public void RetrieveMaterail()
  14. {
  15. MeshRenderer[] orginMeshRenderers = orginTran.GetComponentsInChildren<MeshRenderer>(true);
  16. foreach (var item in tragetTran.GetComponentsInChildren<MeshRenderer>(true))
  17. {
  18. MeshRenderer tmpOrginMeshRender = orginMeshRenderers.ToList().Find(t => t.GetComponent<MeshFilter>().sharedMesh == item.GetComponent<MeshFilter>().sharedMesh && t.sharedMaterial != item.sharedMaterial);
  19. if (tmpOrginMeshRender != null)
  20. {
  21. item.sharedMaterial = tmpOrginMeshRender.sharedMaterial;
  22. Debug.Log(item.name + "已切换材质球");
  23. }
  24. }
  25. }
  26. }