Dialogue들에도 조건을 추가하고 있다.
람다식으로 현재 선택된 대화선택지를 조건이 모두 충족되면 true가 되도록 작성 중인데 예상과 다르게 오류가 발생한다.
찾아보니 데이터 불러올 때 쓰는 객체에 접속하려고 하고있었다. 다른 사전형 데이터에 연결하여 문제없이 해결한 듯 보이지만 실제로 해보기 전까지는 모른다.
지난번처럼 선택지의 상태를 먼저 체크한 후, 아이템이 필요한지 체크하여 걸러주고, 거기까지 통과한다면 선행해서 진행되어야 할 대화가 있는 지 체크하도록 작성해주었다.
if (data.Log_Type == Log_Type.choose || !data.Event_Log_State[i])
{
if (!DataManager.Instance._inventory.inventory.ContainsKey(int.Parse(data.Check_Item[i])))
{
return;
}
string[] checkqeust = data.Check_Quest[i].Split(',');
if (int.TryParse(checkqeust[0], out int result))
{
choice_btn[i].gameObject.SetActive(true);
choice_btn[i].GetComponentInChildren<TextMeshProUGUI>().text = data.Event_Log[i];
}
else
{
if (!DataManager.Instance._questDic.DialogueQuestDic[checkqeust[0]][int.Parse(checkqeust[1])]
.QuestState)
return;
else
{
choice_btn[i].gameObject.SetActive(true);
choice_btn[i].GetComponentInChildren<TextMeshProUGUI>().text = data.Event_Log[i];
}
}
}
if의 depth가 깊어지지 않도록 return으로 다 끊어주고 싶었지만, 이정도만 끊어도 적절한 것 같다.
Quest 체크하는 부분이 제대로 동작할 지 걱정이다.