Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- private
- FixedUpdate
- 초기화
- LateUpdate
- Unity
- 불러오기
- C#
- 게임개발
- LINQ
- public
- 모작
- protected
- SerializeField
- 이벤트 함수
- start
- 직렬화
- Update
- 게임모작
- 저장
- AWAKE
- ScriptableObject
- 게임제작
- 죽림고수
- JSON
- 이동
- iNTERNAL
- 오브젝트
- 접근 제한자
- Transform
- OnEnable
Archives
- Today
- Total
정명직의 게임개발
[Unity] JSON 저장 & 불러오기 구현하기 본문
JSON?
JavaScript Object Notation (JSON)은 Javascript 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷입니다.
{
"level":1,
"timeElapsed":47.5,
"Name":"Player"
}
JSON 형식
JSON 직렬화
JsonUtility
클래스를 사용하여 Unity 오브젝트를 JSON 포맷으로 상호 전환할 수 있습니다. 예를 들어 JSON 직렬화를 사용하여 웹 서비스와 상호작용하거나, 데이터를 텍스트 기반 포맷으로 쉽게 패킹하거나 언패킹한다.
JSON 데이터에 저장하려는 변수를 설명하는 클래스 또는 구조를 만든다
[Serializable]
public class MyClass
{
public int level;
public float timeElapsed;
public string name;
}
Serializable
속성으로 표시하여 JSON 시리얼라이저와 연동되도록 만듭니다.
MyClass myObject = new MyClass();
myObject.level = 1;
myObject.timeElapsed = 47.5f;
myObject.name = "Player";
클래스를 생성하고 값을 넣어준다.
JsonUtility.ToJson
JsonUtility.ToJson
메서드를 사용하여 오브젝트를 JSON 포맷으로 직렬화 한다.
string json = JsonUtility.ToJson(myObject);
// json : '{"level":1,"timeElapsed":47.5,"name":"Player"}'
ToJson
메서드는 JSON 출력을 보기 좋게 출력하는 기능을 지원한다. 이 기능은 기본적으로 꺼져 있지만,true
를 두 번째 파라미터로 전달하여 켤 수 있다JsonUtility.ToJson(myObject, true);
JsonUtility.FromJson
JsonUtility.FromJson
메서드를 사용하여 JSON을 다시 오브젝트로 전환한다.
myObject = JsonUtility.FromJson<MyClass>(json);
저장 & 불러오기 구현하기
using System.IO;
using UnityEngine;
[System.Serializable]
public class PlayerData
{
public int level;
public int stage;
public string name;
}
public class DataManager : MonoBehaviour
{
public PlayerData playerData = new PlayerData();
public void Awake()
{
LoadData();
}
public void SaveData()
{
// Json 직렬화 하기
string json = JsonUtility.ToJson(playerData);
// 외부 폴더에 접근해서 Json 파일 저장하기
// Application.persistentDataPath : 특정 운영체제에서 앱이 사용할 수 있도록 허용한 경로
File.WriteAllText(Path.Combine(Application.persistentDataPath, "PlayerData.json"), json);
}
public void LoadData()
{
// Json 파일 경로 가져오기
string path = Path.Combine(Application.persistentDataPath, "PlayerData.json");
// 지정된 경로에 파일이 있는지 확인한다
if (File.Exists(path))
{
// 경로에 파일이 있으면 Json을 다시 오브젝트로 변환한다.
string json = File.ReadAllText(path);
playerData = JsonUtility.FromJson<PlayerData>(json);
}
}
}
이처럼 JSON 을 사용하면 유니티에서 게임 상태, 플레이어 정보, 레벨 데이터 등을 JSON 형식으로 저장하고 필요할 때 로드하여 사용 할 수 있습니다.
'Unity' 카테고리의 다른 글
[Unity] ScriptableObject 한방에 이해하기 (1) | 2023.07.10 |
---|---|
[Unity] SerializeField, Serializable ?? (0) | 2023.07.06 |
[Unity] 오브젝트를 움직여 보자! (2) | 2023.07.05 |