728x90
npc와 대화하기 위한 코드에 대해 설명하겠습니다.
1
2
3
4
5
6
7
8
9
10
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ObjectData : MonoBehaviour
{
public int id;
public bool isNpc;
}
|
가장 먼저 오브젝트의 정보를 따로 저장해 줄 ObejctData 스크립트를 만든다.
- id - 오브젝트의 id를 저장할 변수이다.
- isNpc - 오브젝트가 사물인지 npc인지 저장할 변수이다.
나중에 이 변수들로 오브젝트들을 구분하여 대화 내용이 적절하게 출력되게 해줄 것이다.
1
2
3
4
5
6
7
8
9
10
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TalkManager : MonoBehaviour
{
Dictionary<int, string[]> talkData;
Dictionary<int, Sprite> portraitDate;
public Sprite[] portraitSprite;
|
talkData - 대화에 관련한 정보를 저장할 변수이다.
portraitData - 대화하고 있는 오브젝트의 사진을 저장할 변수이다.
portraitSprite - portraitData를 초기화 해줄 Sprite를 저장할 변수이다.
1
2
3
4
5
6
|
void Start()
{
talkData = new Dictionary<int, string[]>();
portraitDate = new Dictionary<int, Sprite>();
MakeData();
}
|
변수들의 값을 초기화 해주고 MakeData 함수를 실행해준다.
1
2
3
4
5
6
7
8
|
void MakeData()
{
talkData.Add(1000, new string[] { "안녕?", "이 곳에 처음 왔구나" });
talkData.Add(2000, new string[] { "처음 보는 얼굴인데", "누구야??" });
portraitDate.Add(1000, portraitSprite[0]);
portraitDate.Add(2000, portraitSprite[1]);
}
|
MakeData 함수는 talKData와 portraitData에 id와 대화 내용 또는 오브젝트의 이미지를 초기화해준다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public string GetTalk(int id, int talkIndex)
{
if (talkIndex == talkData[id].Length)
{
return null;
}
else
return talkData[id][talkIndex];
}
public Sprite GetSprite(int id)
{
return portraitDate[id];
}
}
|
GetTalk 함수는 id와 talkIndex를 인자로 받아 talkData에 있는 대화 내용들을 반환해주다가 더 이상 대화 내용이 없다면 null값을 반환해주는 함수이다.
GetSprite 함수는 id를 이용해 오브젝트의 사진을 반환해준다.
나머지 코드는 2편에서 마저 설명하겠다.
728x90
'Unity' 카테고리의 다른 글
[Unity] 퀘스트를 만들어보자(1) (0) | 2020.05.15 |
---|---|
[Unity] npc와 대화를 해보자(2) (0) | 2020.05.14 |
[Unity] 대화창을 만들어 object의 이름을 출력해보자 (0) | 2020.05.12 |
[Unity] 플레이어를 이용한 선택적 무한 배경(2) (0) | 2020.05.11 |
[Unity] 플레이어를 이용한 선택적 무한 배경(1) (0) | 2020.05.10 |