using UnityEngine; public class GameManager : MonoBehaviour { private GameData data; private SaveManager saveManager; private TimeManager timeManager; private GameObject player; // Start is called once before the first execution of Update after the MonoBehaviour is created void Start() { //Get the player player = GameObject.Find("Player"); if (player == null) return; //Get components saveManager = GetComponent(); timeManager = GetComponent(); data = saveManager.LoadGame(); if (data != null) { SetData(); } else { data = new GameData(); } } // Update is called once per frame void Update() { if (Input.GetKeyDown(KeyCode.Space)) { GetData(); saveManager.SaveGame(data); } } void GetData() { data.playerPosition = player.transform.position; #region DaylightCycle data.minutes = timeManager.Minutes; data.hours = timeManager.Hours; data.skybox = RenderSettings.skybox; data.globalLightColor = timeManager.globalLight.color; data.globalLightRotation = timeManager.globalLight.transform.rotation; #endregion #region Stamina data.currentStamina = player.GetComponent().GetCurrentStamina(); data.maxStamina = player.GetComponent().maxStamina; data.canSprint = player.GetComponent().GetCanSprint(); #endregion } void SetData() { player.transform.position = data.playerPosition; #region DaylightCycle timeManager.Minutes = data.minutes; timeManager.Hours = data.hours; RenderSettings.skybox = data.skybox; timeManager.globalLight.color = data.globalLightColor; RenderSettings.fogColor = data.globalLightColor; timeManager.globalLight.transform.rotation = data.globalLightRotation; #endregion #region Stamina player.GetComponent().Reinit(data.currentStamina, data.maxStamina, data.canSprint); #endregion } }