[ 1月 6日 ] 오늘 내가 배운 것 _ 77日次 _ SaveManager을 만들어요
럭키 77!!!!!
6일이 아니라 7일이었다면....
쳇
오늘은 팀원분들과 날밤을 새기로 했다.
ㅋㅋㅋㅋㅋㅋ
왜냐면 내일
목표했던 최종빌드를 마무리 짓기 위해서이다.
이번주 목요일에 유저테스트를 받기 위해
오늘 밤새 열심히 달리려고 한다.
나는 일단 SaveManager을 끝냈다.
끝낸 거 같은데..
뭔가 뭔가 하나 빈 거 같은데
기분 탓일지도,
쉽지 않았던 시간이었다.
SaveData와 SaveManager에 대해 이야기해보자!
먼저
저장할 데이터들을 모아둔 클래스를 하나 만들었다.
< UserData.cs >
유저의 정보를 저장해 주었다.
< SaveData.cs >
그리고 saveData를 만들어 주었다.
여기에는 우리가 json으로 저장해 주기 위해 틀을 만들어주는 부분이다.
< SaveManager.cs >
여기서 우리는 json으로 변환하고 로드해 주는 과정을 적어 둘 것이다.
using System.Collections.Generic;
using System.IO;
using UnityEngine;
public class SaveManager : Singleton<SaveManager>
{
private string saveFilePath; // 저장 파일 경로
protected override void Awake()
{
base.Awake();
// 저장 파일 경로 설정 (플랫폼에 따라 다르게 설정 가능)
saveFilePath = Application.persistentDataPath + "/saveData.json";
}
public void SaveGame(SaveData data)
{
// SaveData를 JSON 형식으로 변환
string json = JsonUtility.ToJson(data, true);
// JSON을 파일에 저장
File.WriteAllText(saveFilePath, json);
Debug.Log($"Game Saved! Path: {saveFilePath}");
}
public SaveData LoadGame()
{
// 저장 파일이 존재하지 않으면 null 반환
if (!File.Exists(saveFilePath))
{
Debug.LogWarning("Save file not found!");
return null;
}
// 파일에서 JSON 읽기
string json = File.ReadAllText(saveFilePath);
// JSON을 SaveData 객체로 변환
SaveData data = JsonUtility.FromJson<SaveData>(json);
Debug.Log($"Game Loaded!");
return data;
}
public void DeleteSave()
{
if (File.Exists(saveFilePath))
{
File.Delete(saveFilePath);
Debug.Log("Save file deleted.");
}
}
}
save에서는 json파일을 저장할 수 있게 해 준다.
load에서는 json파일을 불러올 수 있게 해 준다.
다음에 이렇게 save, load 해준 것을
게임매니저에서
json파일을 가져와서 유니티에 load 해주게 된다.
선언
초기화
여기 SaveGame으로 이제 진짜 저장이 됩니다.
Load도 해줍니다.
이렇게 해주면
우리는 이제
GameManager.Instance.LoadGame()으로 데이터를 가져올 수 있다.
이렇게 이름을 가져올 수 있다.
버튼을 누르거나 함수가 실행될 때
게임매니저의 싱글톤으로 SaveGame로 가져오면
저장도 가능하다.
이렇게 해서 저장기능을 만들어보았다.
아직 부족한 부분이 있긴 한데..
오늘은 UI수정을 우선적으로 하려고 한다..ㅎ