c# 강의/유니티

▶ 유니티/싱글톤 - DataManager

쪼혀 2020. 5. 12. 00:51

> 정리

> 클래스
- : MonoBehaviour 삭제

> 생성자 
- private DataManager()  디셔너리 초기화

> 멤버
- private static DataManager instance;
- priavte Dictionary<int, data타입> dic타입datas;

> 인스턴스 메소드
- public static DataManager GetInstance(){
    if(DataManager.instance == null) DataManager.instance = new DataManager();
    return DataManager.instance;
}

> JSON Data 파일 직렬화
- LoadDatas();
- Resources.Load("Data/chacacter_data") <-- Object 타입 리턴
- Json파일은 TextAsset타입으로 받을수 있다.
- TextAsset textAsset = Resources.Load("Data/character_data") as TextAsset;
- string json = textAsset.text;
- data.cs 만들어논 타입[]로 직렬화 
- 디셔너리 =  타입[].ToDictionary( x => x.id);

> data 값 리턴해주는 메소드들 작성

 

> code 참고

더보기
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using Newtonsoft.Json;

public class DataManager
{
    private static DataManager instance;
    private Dictionary<int, CharacterData> dicCharacterDatas;


    private DataManager()
    {
        this.dicCharacterDatas = new Dictionary<int, CharacterData>();
    }

    public DataManager GetInstance()
    {
        if (DataManager.instance == null)
        {
            DataManager.instance = new DataManager();
        }
        return DataManager.instance;
    }

    public void LoadData()
    {
        TextAsset textAsset = Resources.Load("data/character_data") as TextAsset;
        string json = textAsset.text;
        Debug.Log(json);

        CharacterData[] arrCharacterData = JsonConvert.DeserializeObject<CharacterData[]>(json);

        this.dicCharacterDatas = arrCharacterData.ToDictionary(x => x.id);

    }

    public CharacterData GetCharacterDataById(int id)
    {
        return this.dicCharacterDatas[id];
    }


}