유니티 일기
탑다운 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까지 꼭 써주어야 함
- 메서드 오버로딩 : 매개변수에 따라 함수 호출