Пример #1
0
        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();
        }
Пример #2
0
        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();
        }