static void ApplyAllPrefab(Transform root) { int count = root.childCount; for (int i = 0; i < count; i++) { Transform trans = root.GetChild(i); ApplyAllPrefab(trans); PrefabLoader loader = trans.GetComponent <PrefabLoader>(); if (loader != null && loader.mChild != null) { GameObject loaderGo = loader.mChild.gameObject; Object childPrefab = PrefabUtility.GetPrefabParent(loaderGo); if (childPrefab != null) { PrefabUtility.ReplacePrefab(loaderGo, childPrefab, ReplacePrefabOptions.ConnectToPrefab); } } } }
static void FindPrefabLoader(Transform root, ref List <PrefabLoader> loaders) { int count = root.childCount; for (int i = 0; i < count; i++) { Transform trans = root.GetChild(i); PrefabLoader loader = trans.GetComponent <PrefabLoader>(); if (loader != null) { if (loader.transform.childCount > 0) { loaders.Add(loader); } } else { FindPrefabLoader(trans, ref loaders); } } }