{
"life": "4",
"hp": "100",
"damage": "7",
"moveSpeed": "5"
}
우선 json 파일을 준비해 준다
json에서 { } 괄호는 오브젝트고, [ ] 괄호는 배열이라고 생각하면 된다
[Serializable]
public class PlayerData
{
public int life;
public int hp;
public int damage;
public float moveSpeed;
}
데이터 틀을 만들어 준다
직렬화를 위해 반드시 위에 [Serializable]을 붙여주어야 한다(using System)
이때 각 변수들의 이름은 json 데이터에서의 각 항목들의 이름과 일치해야 한다
public class DataManager
{
public PlayerData Player { get; private set; }
public void Init()
{
Player = LoadSingleJson<PlayerData>("PlayerStatData");
}
Item LoadSingleJson<Item>(string path)
{
TextAsset textAsset = Managers.Resource.Load<TextAsset>($"Data/{path}");
return JsonUtility.FromJson<Item>(textAsset.text);
}
}
json 데이터를 파싱하는 Data Manager 클래스를 만들어서 작업하였다
단일 오브젝트를 갖고 있는 json 타입이기 때문에 아까 만들었던 PlayerData 클래스 형태의 변수를 하나 만들어 준다
우선 textAsset을 로드해 준 다음, JsonUtility의 FromJson을 이용해 파싱해 준다
* FromJson<틀>(텍스트) 를 이용하면 인자로 넘겨진 텍스트를 지정한 틀에 맞게끔 알아서 파싱해 준다
이후 DataManager에 접근하여 Player의 각 항목들에 접근할 수 있다
'Programing > Unity(C#)' 카테고리의 다른 글
[Unity] 8방향으로 탄환을 발사하는 개체 (0) | 2024.04.12 |
---|---|
[C#] Dictionary 형태로 json 데이터 파싱하기 (0) | 2024.04.09 |
[Unity] 특정 방향으로 2D 오브젝트 회전시키기 (0) | 2024.04.06 |
[C#] Press 입력 받기 (0) | 2024.04.02 |
[Unity] 캐릭터의 움직임이 버벅거리는 문제(Rigidbody Interpolate) (0) | 2024.03.31 |