Unity3D_MMO - DataManager (2)

k_hyun·2022년 10월 17일
0

Unity_MMO_Project

목록 보기
20/33

Data.Contents.cs

[Serializable]
public class Stat
{
    public int level;
    public int hp;
    public int attack;
}

[Serializable]
public class StatData : ILoader<int, Stat>
{
    public List<Stat> stats = new List<Stat>();

    // Dictionary를 만들어서 초기화하고 반환
    public Dictionary<int, Stat> MakeDict()
    {
        Dictionary<int, Stat> dict = new Dictionary<int, Stat>();
        foreach (Stat stat in stats)
            dict.Add(stat.level, stat);
        return dict;
    }
}

기존에 DataManager의 코드를 옮겨 작성하였다.

DataManager.cs

public interface ILoader<Key, Value>
{
    Dictionary<Key, Value> MakeDict();
}

public class DataManager 
{
    public Dictionary<int, Stat> StatDict { get; private set; } = new Dictionary<int, Stat> ();

    public void Init()
    {       
        StatDict = LoadJson<StatData, int, Stat>("StatData").MakeDict();
    }

    Loader LoadJson<Loader, Key, Value>(string path) where Loader : ILoader<Key, Value>
    {

        TextAsset textAsset = Managers.Resource.Load<TextAsset>($"Data/{path}");
        return JsonUtility.FromJson<Loader>(textAsset.text);
    }
    
}

LoadJson을 통해 제네릭 타입으로 파일을 읽어오는 것을 구현하였다.

0개의 댓글