private IEnumerator LoadMainMenuRoutine()
        {
            CharacterPool.Clear();
            saveableObjects.Clear();
            AsyncOperation async;

            // Unload scenes
            for (int i = 0; i < SceneManager.sceneCount; i++)
            {
                if (SceneManager.GetSceneAt(i).buildIndex == 0)
                {
                    continue;
                }
                SceneManager.UnloadSceneAsync(SceneManager.GetSceneAt(i));
            }

            //Load scenes
            async = SceneManager.LoadSceneAsync("MainMenu", LoadSceneMode.Additive);
            while (!async.isDone)
            {
                yield return(null);
            }

            SceneManager.SetActiveScene(SceneManager.GetSceneByName("MainMenu"));
        }
        private IEnumerator LoadSaveRoutine()
        {
            CharacterPool.Clear();
            newGame = false;

            // Remove all non-global objects from the list. They will be destroyed
            var toRemove = (
                from obj in saveableObjects
                where !obj.Value.global
                select obj.Key).ToList();

            foreach (var key in toRemove)
            {
                saveableObjects.Remove(key);
            }


            yield return(StartCoroutine(LoadGameRoutine()));

            lastLoadTime = Time.time;
            yield return(null);            // SaveableObjects will re-register themselves during this frame

            string allData = File.ReadAllText(Application.persistentDataPath + "/Save.json");

            allData = allData.Replace("\n", "");
            string[] data = allData.Split(';');

            for (int i = 0; i < data.Length; i++)
            {
                if (!string.IsNullOrEmpty(data[i]))
                {
                    try
                    {
                        saveableObjects[data[i]].Load(data[++i]);
                    }
                    catch (KeyNotFoundException e)
                    {
                        Debug.LogWarning("Savegame data did not find object: " + data[i]);
                    }
                }
            }

            yield return(null);
        }