728x90
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
public class QuestInfo
{
public int m_Type;
}
public class QuestData : MonoBehaviour
{
private Dictionary<string, QuestInfo> m_Dic = new Dictionary<string, QuestInfo>();
private void Awake()
{
m_Dic.Add("Kill_Monster", new QuestInfo() { m_Type = 0 });
m_Dic.Add("Kill_Monster_Daily", new QuestInfo() { m_Type = 0 });
m_Dic.Add("Kill_Monster_BattlePass", new QuestInfo() { m_Type = 0 });
m_Dic.Add("PlayTime", new QuestInfo() { m_Type = 1 });
m_Dic.Add("PlayTime_Daily", new QuestInfo() { m_Type = 1 });
m_Dic.Add("PlayTime_BattlePass", new QuestInfo() { m_Type = 1 });
m_Dic.Add("StageClear", new QuestInfo() { m_Type = 2 });
m_Dic.Add("StageClear_BattlePass", new QuestInfo() { m_Type = 2 });
m_Dic.Add("StageClear_Event", new QuestInfo() { m_Type = 2 });
}
// Start is called before the first frame update
void Start()
{
var lookup = m_Dic.ToLookup(arg => arg.Value.m_Type, arg => arg.Key);
var type = 0;
foreach (var tmp in lookup[type])
{
Debug.Log($"type {type} : {tmp}");
}
}
// Update is called once per frame
void Update()
{
}
}
퀘스트 시스템을 만드는데 퀘스트 조건에
따라서 몬스터 한마리를 죽였을 때 연관된
퀘스트를 주르륵 처리해야할 때가 있다
그냥 심플하게 하자면 전체 퀘스트 리스
트를 루프로 돌면서 조건이 이거인가 체크
해서 맞으면 처리 처리 처리 하면 되겠지만
linq 와 함께 더 간지나게 제작해봅시다
설명은 생략 -_- linq 를 알 정도면 저 정도
는 쉽게 알아볼 수 있을테니;;;
ToLookup 이 기존의 Dictionary 를 내가
원하는 키와 값으로 재구성해주는 역할을
하는 것만 기억하면 끝
728x90
'프로그래밍 > C#' 카테고리의 다른 글
C# 가상함수(Virtual)와 오버라이드(override) (0) | 2022.01.14 |
---|---|
C# Action<> 의 활용 (0) | 2021.10.15 |
KeyCode.BackQuote = = ` (0) | 2021.09.27 |
BigInteger x ratio or percent (0) | 2021.09.23 |
.Net 4.0 (0) | 2021.09.14 |
댓글