유니티 일기

탑다운 2D RPG - 퀘스트 시스템 구현하기

mky 2025. 9. 6. 15:41

골드메탈님의 유튜브 강의를 보고 배운 것을 정리하였습니다.

 

1. 퀘스트 대화

- 퀘스트 매니저 생성

- 퀘스트 데이터(스크립트) 생성

- 퀘스트 데이터를 저장할 딕셔너리 변수 생성

- Add 함수로 <QuestId, QuestData> 데이터를 저장

- 구조체 생성을 위해 매개변수 생성자를 작성

- int[]에는 해당 퀘스트에 연관된 NPC Id를 입력

- NPC Id를 받고 퀘스트번호를 반환하는 함수 생성

- 게임매니저에서 퀘스트번호를 가져옴

- 퀘스트번호 + NPC Id = 퀘스트 대화 데이터 Id

- 순서 상관없이 대화가 진행되는 문제 발생(무시되는 NPC 발생) -> 퀘스트 대화순서 변수 생성

  -> 퀘스트번호 + 퀘스트 대화순서 = 퀘스트 대화 Id -> 대화 진행을 위해 퀘스트 대화순서를 올리는 함수 생

 

2. 퀘스트 진행

- 퀘스트 이름을 반환하도록 함수 개조

3. 퀘스트 오브젝트

- 퀘스트 오브젝트를 저장할 변수 생성

- 퀘스트 오브젝트를 관리할 함수 생성

- 퀘스트번호, 퀘스트 대화순서에 따라 오브젝트 조절

4. 예외처리

- ContainsKey() :Dictionary에 Key가 존재하는지 검사

- Id가 없으면 퀘스트 대화순서 제거 후 재탐색 -> 그래도 다면 퀘스트번호까지 제거 후 재탐색

5. 로직 다듬기

- 재귀함수로 코드 양 줄이기

- 반환값이 있는 재귀함수는 return까지 꼭 써주어야 함

- 메서드 오버로딩 : 매개변수에 따라 함수 호출