본문 바로가기
유니티/3D RPG

17 퀘스트 시스템

by 노오오오오옹 2020. 1. 16.

 기능

※ 참고 사항 (20.06.06 게시글 수정)

1. NPC 테이블에는 NPC가 보유한 퀘스트 정보가, 퀘스트에는 필요한 데이터 목록들이 저장되어있다.

2. 퀘스트 시스템은 퀘스트 데이터(QuestData)(QuestManager), 보유한 퀘스트(PlayerQuest), 보여줄 영역(QuestBookUI, MiniQuestUI) 3가지 영역으로 구분한다.

2-1 QuestBookUI : 일반적으로 모든 퀘스트를 볼 수 있는 퀘스트 UI이다. 퀘스트의 클래스와 지역에 따라 표시된다. 또한 퀘스트는 포기 및 미니퀘스트에 등록 가능하다.

2-2 MiniQuestUI : 인게임 화면에서 표시되는 퀘스트 UI이다.  

3. 클라이언트는 서버로부터 퀘스트 정보를 요청한다. 요청받은 데이터는 QuestData에서 관리한다.

4. 클라이언트는 서버로부터 유저의 보유한 퀘스트 정보를 요청한다. 데이터는 PlayerData에서 관리한다.

5.  시작에 앞서 유저의 보유한 퀘스트, 설정한 미니 퀘스트들을 정리한다.

6. 각 UI 화면으로 전환한다면, 조건에 맞게 보여준다.

 

! 주의 사항

- 퀘스트 변화시 QuestBookUI와 MiniQuestUI는 자동으로 갱신되어야 한다.

- 퀘스트는 조건에 부합(선행 퀘스트 클리어 여부)하면 받을 수 있고, 퀘스트를 포기하더라도 다시 받을 수 있다.

- 퀘스트에 해당하는 아이템이나 몬스터를 제거한다면, 퀘스트의 Count는 변화해야한다.

 코드

더보기
퀘스트 Table
PlayerQuest의 함수들이다. Quest가 Add, Remove 될때 delegate인 QuestChanged를실행시킨다. 그에따라 QuestBookUI와 MiniQuestUI는 자동으로 갱신된다.

퀘스트에 해당하는 몬스터나 아이템에 대한 Count가 변화된다면, 퀘스트 UI들의 아이콘과 내용을 변화시킨다.
PlayerQuest의 wasQuestChagned에 GetQuests 함수를 등록시킨다. 만약 플레이어의 퀘스트가 변하된다면, 해당 함수는 자동으로 실행된다.
퀘스트 목록을 가져올 때는 퀘스트이 Class와 Region에 맞는 것들을 가져온다.

 

 구현 영상

 

 리펙토링

 

 

'유니티 > 3D RPG' 카테고리의 다른 글

19 아이템 드래그/드랍  (0) 2020.06.06
18 비헤이비어 트리  (0) 2020.01.20
15 UI 추가/수정  (0) 2020.01.11
14 아이템 장착 및 해제  (0) 2020.01.07
013 몬스터 DB  (0) 2019.12.30

댓글