public static void DestroyComponentsMatching(GameObject dst, IsDesiredComponent componentFilter) { var dstComponents = new List <Component>(); dst.GetComponents(dstComponents); dstComponents.RemoveAll(x => !componentFilter(x)); DestroyComponents(dstComponents); }
public static void ReplaceComponentsIfDifferent(GameObject src, GameObject dst, IsDesiredComponent componentFilter) { var srcComponents = new List <Component>(); src.GetComponents(srcComponents); srcComponents.RemoveAll(x => !componentFilter(x)); var dstComponents = new List <Component>(); dst.GetComponents(dstComponents); dstComponents.RemoveAll(x => !componentFilter(x)); // Generate components if (!CompareComponentOrderAndTypes(srcComponents, dstComponents)) { DestroyComponents(dstComponents); // Add src components to dst dstComponents.Clear(); for (int i = 0; i != srcComponents.Count; i++) { Component com = dst.AddComponent(srcComponents[i].GetType()); dstComponents.Add(com); } } // Copy Data to components for (int i = 0; i != srcComponents.Count; i++) { UnityEditor.EditorUtility.CopySerializedIfDifferent(srcComponents[i], dstComponents[i]); } }
public static void DestroyComponentsMatching(GameObject dst, IsDesiredComponent componentFilter) {