본문 바로가기

Unity

[Unity] 퀘스트를 만들어보자(3)

728x90

2편에 이어서 3편을 만들어보겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class TalkManager : MonoBehaviour
{
      void MakeData()
    {
        talkData.Add(10 + 1000new string[] { "넌 뭐야""오른쪽으로 가봐" });
        talkData.Add(11 + 2000new string[] { "넌 뭐야""할거 없어보이는데""내 증기 좀 찾아줘" });
 
        talkData.Add(20 + 5000new string[] { "난 증기야""날 잡아봐" });
        talkData.Add(21 + 2000new string[] { "뭐야""증기를 찾아달랬지 왜 잡아왔어" })
    }

 

TalkManager 스크립트 추가 내용만 설명하겠습니다.

 

MakeData에 추가된 내용들은 퀘스트 내용입니다.  9행은 10 + 1000, 10행의 11 + 2000은 같은 퀘스트입니다. 왜냐하면 십의 자리 숫자가 같기 때문입니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 public string GetTalk(int id, int talkIndex)
    {
        if (!talkData.ContainsKey(id))
        {
            if(!talkData.ContainsKey(id - id % 10))
            {
                return GetTalk(id - id % 100, talkIndex);
            }
            else
            {
                return GetTalk(id - id % 10, talkIndex);
            } 
        }
            
        if (talkIndex == talkData[id].Length)
        {
            return null;
        }
        else
            return talkData[id][talkIndex];
    }
}

 

GetTalk 함수는 대화 정보를 가져올 함수입니다. 첫번째 조건문은 현재 퀘스트를 진행 중이 아니거나 퀘스트와 상관없는 npc에게 말을 걸었을 때 기본적으로 설정해놓은 대화가 이어질 수 있게 해준 것이고, 두번째 조건문은 퀘스트를 진행 중인 npc를에게 말을 걸었을 때 미리 설정해놓은 퀘스트 대하가 이뤄질 수 있게 해놓은 것이다.

728x90