using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.Audio;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class SaveManager : MonoBehaviour {
public static SaveManager instance;
Slider masterVol, musicVol, SFXVol, CamSen;
AudioMixer masterAudio;
Toggle tutorialTog;
GameObject[] settingsArray = { };
bool sceneLoaded = false;
public GameData gamedata = new GameData
{
masterVolData = 0f,
musicVolData = 0f,
SFXVolData = 0f,
CamSenData = 0f,
tutorialTogData = true
};
private void Awake()
{
if(instance == null)
{
instance = this;
DontDestroyOnLoad(gameObject);
}
else
{
Destroy(gameObject);
}
}
private void OnEnable()
{
SceneManager.sceneLoaded += OnSceneLoaded;
SceneManager.sceneUnloaded += OnSceneUnloaded;
}
private void OnDisable()
{
SceneManager.sceneLoaded -= OnSceneLoaded;
SceneManager.sceneUnloaded -= OnSceneUnloaded;
}
public void SaveData()
{
gamedata.masterVolData = masterVol.value;
gamedata.musicVolData = musicVol.value;
gamedata.SFXVolData = SFXVol.value;
gamedata.CamSenData = CamSen.value;
gamedata.tutorialTogData = tutorialTog.isOn;
gamedata.Save(gamedata);
}
public void LoadData()
{
GameData loadedData = gamedata.Load();
if (loadedData == null)
{
return;
}
else
{
masterVol.value = loadedData.masterVolData;
musicVol.value = loadedData.musicVolData;
SFXVol.value = loadedData.SFXVolData;
CamSen.value = loadedData.CamSenData;
tutorialTog.isOn = loadedData.tutorialTogData;
}
}
void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{
sceneLoaded = true;
settingsArray = Resources.FindObjectsOfTypeAll<GameObject>().Where(obj => obj.tag == "SettingsUI").ToArray();
foreach (GameObject obj in settingsArray)
{
switch(obj.name)
{
case "MasterSlider":
masterVol = obj.GetComponent<Slider>();
break;
case "MusicSlider":
musicVol = obj.GetComponent<Slider>();
break;
case "SFXSlider":
SFXVol = obj.GetComponent<Slider>();
break;
case "SensitivitySlider":
CamSen = obj.GetComponent<Slider>();
break;
case "TutTog":
tutorialTog = obj.GetComponent<Toggle>();
break;
default:
//Throw error
break;
}
}
LoadData();
}
void OnSceneUnloaded(Scene scene)
{
sceneLoaded = false;
}
}
评论 (0)