SimpleSpritePackerEditor.SPTools.GetAllScenesNames C# (CSharp) Method

GetAllScenesNames() public static method

Gets all scenes names.
public static GetAllScenesNames ( ) : string[]
return string[]
        public static string[] GetAllScenesNames()
        {
            List<string> list = new List<string>();

            foreach (EditorBuildSettingsScene scene in EditorBuildSettings.scenes)
            {
                if (!scene.enabled) continue;
                list.Add(scene.path);
            }

            return list.ToArray();
        }

Usage Example

Beispiel #1
0
        /// <summary>
        /// Replaces all the references in all scenes.
        /// </summary>
        /// <param name="spriteInfoList">Sprite info list.</param>
        /// <param name="spriteRenderersOnly">If set to <c>true</c> sprite renderers only.</param>
        /// <param name="skipCurrent">If set to <c>true</c> skip current scene.</param>
        /// <returns>The replaced references count.</returns>
        public static int ReplaceReferencesInAllScenes(List <SPSpriteInfo> spriteInfoList, SPReferenceReplacerWindow.ReplaceMode replaceMode, bool spriteRenderersOnly, bool skipCurrent)
        {
            int  count        = 0;
            bool replaceAtlas = (replaceMode == SPReferenceReplacerWindow.ReplaceMode.AtlasWithSource);

            // Grab the current scene name
            //string startingScene = EditorApplication.currentScene;

            Scene  scene         = EditorSceneManager.GetActiveScene();
            string startingScene = scene.ToString();

            // Get all scene names
            string[] sceneNames = SPTools.GetAllScenesNames();

            if (sceneNames.Length == 0)
            {
                return(count);
            }

            foreach (string sceneName in sceneNames)
            {
                // Check if we should skip the scene
                if (skipCurrent && sceneName.Equals(startingScene))
                {
                    continue;
                }

                // Try opening the scene
                //if (EditorApplication.OpenScene(sceneName))
                Scene _scene = EditorSceneManager.OpenScene(sceneName);
                if (EditorSceneManager.SetActiveScene(_scene))
                {
                    Component[] comps = Object.FindObjectsOfType <Component>();

                    foreach (SPSpriteInfo spriteInfo in spriteInfoList)
                    {
                        if (spriteInfo.source == null || !(spriteInfo.source is Sprite) || spriteInfo.targetSprite == null)
                        {
                            continue;
                        }

                        count += SPTools.ReplaceReferences(comps, (replaceAtlas ? spriteInfo.targetSprite : (spriteInfo.source as Sprite)), (replaceAtlas ? (spriteInfo.source as Sprite) : spriteInfo.targetSprite), spriteRenderersOnly);
                    }

                    //EditorApplication.SaveScene();
                    Scene __scene = EditorSceneManager.GetActiveScene();
                    EditorSceneManager.SaveScene(__scene);
                }
            }

            // Load back the original scene
            //EditorApplication.OpenScene(sceneName)
            EditorSceneManager.OpenScene(startingScene);

            // Return the replaced references count
            return(count);
        }
All Usage Examples Of SimpleSpritePackerEditor.SPTools::GetAllScenesNames