private void ReplacePrefabsInScene() { MB_ReplacePrefabsInScene rp = new MB_ReplacePrefabsInScene(); rp.replaceEnforceStructure = model.enforceSrcAndTargHaveSameStructure; int numReplaced = 0; int numErrors = 0; errorMessages = ""; infoMessages = ""; EditorUtility.DisplayProgressBar("Replace Prefabs In Scene", "Replace Prefabs In Scene", 0); for (int i = 0; i < model.prefabsToSwitch.Length; i++) { MB_ReplacePrefabsSettings.PrefabPair pp = model.prefabsToSwitch[i]; pp.objsWithErrors.Clear(); if (pp.enabled) { GameObject src, targ; if (model.reverseSrcAndTarg) { src = pp.targPrefab; targ = pp.srcPrefab; } else { src = pp.srcPrefab; targ = pp.targPrefab; } numReplaced += rp.ReplacePrefabInstancesInScene(src, targ, pp.objsWithErrors); numErrors += pp.objsWithErrors.Count; } EditorUtility.DisplayProgressBar("Replace Prefabs In Scene", "Replace In Scene: " + pp.srcPrefab, (float)i / (float)model.prefabsToSwitch.Length); } EditorUtility.ClearProgressBar(); Debug.Log("Total prefab instances replaced: " + numReplaced); infoMessages = "Total prefab instances replaced: " + numReplaced; if (numErrors > 0) { errorMessages = "There were errors replacing some of the prefabs in the scene. See console for details."; } soModel.Update(); }
public static void ShowWindow(MB3_BatchPrefabBaker.MB3_PrefabBakerRow[] prefabPairs) { MB_ReplacePrefabsInSceneEditorWindow window = GetWindow <MB_ReplacePrefabsInSceneEditorWindow>(true, "Replace Prefabs In Scene", true); window.Show(); MB_ReplacePrefabsSettings.PrefabPair[] pps = new MB_ReplacePrefabsSettings.PrefabPair[prefabPairs.Length]; for (int i = 0; i < pps.Length; i++) { pps[i] = new MB_ReplacePrefabsSettings.PrefabPair() { enabled = true, srcPrefab = prefabPairs[i].sourcePrefab, targPrefab = prefabPairs[i].resultPrefab, }; } window.model.prefabsToSwitch = pps; window.soModel.Update(); }