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);
            }
        }
 private static SceneData GetSceneData(int buildIndex)
 {
     if (SceneData.TryGetValue(buildIndex, out SceneData sceneData))
     {
         return(sceneData);
     }
     else
     {
         SceneData newSceneData = new SceneData();
         SceneData.Add(buildIndex, newSceneData);
         return(newSceneData);
     }
 }
        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);
            }
        }