TIL_2025_03_12 데이터 저장

김효중·2025년 3월 12일

직렬화란?

직렬화란 데이터를 객체나 데이터를 문자열 또는 이진 데이터로 변환하여 파일, 네트워크, 데이터베이스등에 저장하거나 전송할 수 있도록 만드는 것이다.

[System.Serializable]
public class PlayerData
{
    public string playerName;
    public int level;
    public float health;
}

데이터의 저장은 스크립트 내의 객체를 JSON으로 직렬화를 하여 저장하고 파일에 저장하고
파일에서 읽어와 JSON에 저장하여 객체로 역직렬화 하는 과정을 거친다.

JSON 데이터 변환

객체 -> Json(직렬화)

private string _jsonData;
_jsonData = JsonUtility.ToJson(playerData);

위 코드는 객체를 JSON으로 변경하여 문자열에 저장한다.
객체의 멤버들이 JSON으로 전환 되어 저장된다.

Json-> 객체(역직렬화)

playerData = JsonUtility.FromJson<PlayerData>(jsonData);

위 코드는 반대로 Json을 객체 데이터로 변환한다.
Json의 데이터를 객체의 멤버로 변화한다.

파일로 저장

using System.IO;
...
_filePath = Path.Combine(Application.persistentDataPath, "PlayerData.json");
File.WriteAllText(_filePath, jsonData);

File.WriteAllText를 통해 _filePath 경로에 jsonData를 저장한다.
Application.persistentDataPath는 각 운영체제에서 허용하는 읽기/쓰기가 가능한 폴더 경로로 안전히 데이터를 저장/불러오기를 할 수 있다.

파일 불러오기

if (File.Exists(_filePath))
        {
            string jsonData = File.ReadAllText(_filePath);
            PlayerData playerData = JsonUtility.FromJson<PlayerData>(jsonData);//역직렬화
        }

File.Exists(_filePath)는 경로에 파일이 존재하는지 확인한다.
파일이 있다면 경로에서 Json을 읽어 문자열에 저장한다.
그 후 위에서 했던 것 처럼 객체의 데이터를 전달할 수 있다.

profile
도전하는 개발자

0개의 댓글