728x90
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace starcraft
{
internal class DataManager
{
public static readonly DataManager instance = new DataManager();
private Dictionary<int, ItemData> dicItemDatas = new Dictionary<int, ItemData>(); //아이템 데이터를 딕셔너리에 관리
//생성자
private DataManager() { }
//아이템 데이터 로드 메서드
public void LoadItemDatas()
{
//파일을 읽기
string json = File.ReadAllText("./item_data.json");
Console.WriteLine(json);
//역직렬화
ItemData[] arrItemDatas = JsonConvert.DeserializeObject<ItemData[]>(json);
Console.WriteLine(arrItemDatas.Length); //2
//컬렉션 사용전 반드시 인스턴스화
//dicItemDatas = arr.ToDictionary(x = x.id); <== 이렇게 해도 됨!!
foreach (ItemData data in arrItemDatas)
{
this.dicItemDatas.Add(data.id, data); //딕셔너리에 아이템데이터 저장
}
}
//아이템데이터 반환 메서드 (딕셔너리 안에 아이템 id로 찾아서 아이템데이터 출력)
public ItemData GetItemData(int id)
{
return this.dicItemDatas[id];
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace starcraft
{
internal class ItemData
{
public int id;
public string name;
public int damage;
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace starcraft
{
public class Item
{
public ItemInfo info;
//생성자
public Item(ItemInfo info)
{
this.info = info;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Permissions;
using System.Text;
using System.Threading.Tasks;
namespace starcraft
{
//저장객체!!!
public class ItemInfo
{
public int id;
public int damage;
//생성자
public ItemInfo(int id,int damage)
{
this.id = id;
this.damage = damage;
}
}
}
using System;
using System.IO;
using Newtonsoft;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Linq;
namespace starcraft
{
public class App
{
//생성자
public App()
{
}
}
}
대리자(delegate)
- 대리자는 인스턴스가 아닌 형식!!
- 인스턴스화 필수
- 대리자는 메서드를 다른 메서드의 인수로 전달 가능
(대리자 인스턴스가 필요, 인스턴스에 메서드 연결되어있음)
1. 형식 생성
2. 인스턴스 생성
3. 메서드 연결
4. 사용
-사용자 지정형식
enum / class/ struct/ delegate
람다
- 익명 함수를 만들기 위해 사용
- 람다 선언 연산자: =>
'KDT > C# 프로그래밍' 카테고리의 다른 글
23/07/28 게임 세팅 (0) | 2023.07.28 |
---|---|
23/07/27 과제(복습) (0) | 2023.07.27 |
23/07/27 대리자 연습 (0) | 2023.07.27 |
23/07/27 Action 대리자 (0) | 2023.07.27 |
23/07/27 데이터매니저 데이터로드 (0) | 2023.07.27 |