Unity/Study

유니티 Json 데이터 관리

홍삼맛 2023. 12. 12. 21:11

기능 소개

유니티에는 여러 데이터 저장 방식 중, Json으로 데이터를 저장하는 기능을 구현하도록 한다


기능 구현

DataManager.cs

public class DataManager
{
    public Dictionary<string, ItemData> Items = new();

    public void Initialize()
    {
        Items = LoadJson<ItemDataLoader, string, ItemData>("ItemData").MakeData();
    }

    private TLoader LoadJson<TLoader, Tkey, TValue>(string path) where TLoader : ILoadData<Tkey, TValue>
    {
        TextAsset textAsset = Main.Resource.Load<TextAsset>(path);
        return JsonConvert.DeserializeObject<TLoader>(textAsset.text);
    }
}
  • DataManager 클래스를 생성하여 Dictionary에서 Json 파일에 할당된 string key값에 따라 해당 데이터를 불러오도록 한다

ItemData.cs

[Serializable]
public class ItemData
{
    public ItemType itemType;
    public string itemStringKey;
    public int itemStatHP;
    public int itemStatATK;
    public int itemStatDEF;
    public float itemStatCRIT;
    public string itemName;
    public string itemDesc;
    public int itemPrice;
}

[Serializable]
public class ItemDataLoader : ILoadData<string, ItemData>
{
    public List<ItemData> items = new();

    public Dictionary<string, ItemData> MakeData()
    {
        return items.ToDictionary(item => item.itemStringKey);
    }
}
  • Json에 할당된 값을 똑같이 ItemData 클래스에 생성된 필드 값에 로드되도록 ItemDataLoader를 통해 데이터를 파싱한다