Пример #1
0
 private static void SaveAllData()
 {
     for (int i = 0; i < SceneManager.sceneCount; i++)
     {
         SceneDataRepository.SaveData(SceneManager.GetSceneAt(i));
     }
 }
        public static void SaveData(Scene scene)
        {
            IDataPersister[] persisters = GetDataPersisters(scene);

            SceneData sceneData = SceneDataRepository.GetSceneData(scene);

            foreach (IDataPersister persister in persisters)
            {
                DataSettings key = persister.GetDataSettings();
                sceneData.Store(key.dataKey, persister.SaveData(), key.persistenceType);
            }
        }
Пример #3
0
        public static void LoadLevel(LevelInfo levelInfo)
        {
            SaveAllData();

            if (CurrantLevel != null && !CurrantLevel.IsGlobal)
            {
                SceneDataRepository.DeleteAllLevelData(loadedScenesInLevel.ToArray());
                Inventory.DeleteAllLevelData();
            }

            loadedScenesInLevel.Clear();
            CurrantLevel = levelInfo;

            LoadMainSceneRaw(levelInfo.StartScene);
        }
Пример #4
0
        private static void OnLoadSceneCompleted(MySceneInfo sceneInfo)
        {
            if (TryGetActiveScene(sceneInfo, out Scene scene))
            {
                SceneDataRepository.LoadData(scene);
                loadedScenesInLevel.Add(scene.buildIndex);

                if (sceneInfo is MainSceneInfo mainSceneInfo && mainSceneInfo.StartCheckpoint != null)
                {
                    CheckpointManager.SetStartCheckpoint(mainSceneInfo.StartCheckpoint);
                }
            }
            else
            {
                Debug.LogError("Something went wrong when loading scene");
            }
        }
        public static void LoadData(Scene scene)
        {
            IDataPersister[] persisters = GetDataPersisters(scene);

            SceneData sceneData = SceneDataRepository.GetSceneData(scene);

            foreach (var data in sceneData.SavedData)
            {
                IDataPersister persister = persisters.FirstOrDefault(p => Equals(data.Key, p.GetDataSettings().dataKey));
                if (persister == null)
                {
                    continue;
                }

                persister.LoadData(data.Value.Data);
            }
        }
Пример #6
0
        public static void UnloadScene(MySceneInfo sceneInfo)
        {
            if (sceneInfo == null)
            {
                Debug.Log("SceneInfo is null");
                return;
            }

            if (TryGetActiveScene(sceneInfo, out Scene scene))
            {
                SceneDataRepository.SaveData(scene);
                GetUnload(scene);
            }
            else
            {
                Debug.Log("Scene " + sceneInfo.name + " was not loaded");
            }
        }