반응형
NPC와의 대화 시스템을 구현했습니다.
JustKnight/Assets/Resources/dialogues/npc_01/quest_01.json at main · znlsnel/JustKnight
2D Unity Project. Contribute to znlsnel/JustKnight development by creating an account on GitHub.
github.com
Json을 이용하여 모든 대본을 쉽게 관리할 수 있게 하였습니다.
Dialogue Handler
JustKnight/Assets/Scripts/UI/DialogueHandler.cs at main · znlsnel/JustKnight
2D Unity Project. Contribute to znlsnel/JustKnight development by creating an account on GitHub.
github.com
public class Response
{
public List<string> text;
public int next;
}
public class Dialogue
{
public List<string> text;
public List<Response> responses;
public string quest;
}
public class Conversation
{
public string id;
public string npc;
public List<Dialogue> dialogues;
}
Json의 형식입니다. NPC의 대화 목록인 Dialogue가 있으며 그에 대한 응답인 Response가 있습니다.
{
"id" : 0,
"text" :
[
"어서오게 젊은이! 당신 같이 젊은 고양이는 오랜만이구만 껄껄",
"그래! 이곳에는 어쩐일인가"
],
"responses":
[
{
"text":
[
"이곳에 푸른 눈의 고양이가 있다고 해서 왔습니다.",
"혹시 알고 있는게 있습니까?"
],
"next": 1
}
]
},
{
"id" : 1,
"text" :
[
"흠.. 푸른 눈의 고양이라.. 그러고 보니 철수 녀석이 그런 얘기를 했던 것 같은데.."
],
"responses":
[
{
"text":
[
"무슨 이야기인지 들어볼 수 있겠습니까?"
],
"next": 2
}
]
},
각 대본에는 id값이 있으며 플레이어 응답별로 다음 대본의 index값을 가지고 있습니다.
{
"id" : 2,
"text" :
[
"그 전에 내 부탁 하나 들어줄 수 있겠나?",
"뒷 산에 가서 몬스터 10마리만 잡아주게"
],
"responses":
[
{
"text":
[
"싫습니다."
],
"next": 6
},
{
"text":
[
"알겠습니다."
],
"next": 3
}
]
},
{
"id" : 3,
"text" :
[
"고맙네.."
],
"responses":
[
{
"text":
[
"(몬스터 잡으러 가기)"
],
"next": -5
}
],
"quest" : "Quest_1"
},
{
"id" : 5,
"text" :
[
"부탁합세.. 뒷 산에서 몬스터 10마리 일세!"
],
"responses":
[
{
"text":
[
"네 다녀오겠습니다"
],
"next": -5
}
]
},
대화가 끝나는 부분은 next에 음수를 넣어주었고
다음에 대화를 시작하면 양수로 변환한 next 에서 대화가 시작되도록 하였습니다.
quest를 받으면 quest의 id를 입력받게 하였고
다음에 구현하게될 quest manager와 연동할 수 있는 길을 만들었습니다.
각 대본을 실행하기 위한 선행 퀘스트 목록도 넣을 수 있겠습니다.
반응형
LIST
'Unity > 기록' 카테고리의 다른 글
NPC 대화, 퀘스트 시스템 (2) | 2024.09.02 |
---|---|
상호작용 기능 구현 (0) | 2024.06.22 |
인벤토리 기능 (0) | 2024.06.13 |
Item System 구현 (0) | 2024.06.08 |
Unity Shader Hp Bar (0) | 2024.05.14 |