유니티 게임 개발/3D Portfolio

[유니티] 3D Portfolio #8 퀘스트 시스템 구현, 전체적인 리팩토링

노랑꼬리 2023. 9. 13. 23:00

목표

퀘스트 시스템 구현

전체적인 코드 리팩토링

(작업 기간 : 2023.09.10~09.13 (4일 소요))

 

1. 퀘스트 시스템 구현

1) 1차 구현

- 기존에 만들어둔 대화창 코드에 덧붙이는 식으로 1차 작동 구현

- 코드의 참조가 복잡해지는 것을 느껴 퀘스트 시스템을 슬롯 프리팹 형식을 사용해서 슬롯별로 관리해주기로 함

 

2) 2차 구현

- 슬롯 프리팹을 사용하며 코드는 간결해졌으나 가독성과 CSV와의 연계가 힘들어짐

- 범용성이 떨어져 매 챕터마다 새로 짜야하는 불편함 발생

- 구현한 시스템 자체를 사용할 수 있도록 CSV 파일 자체 구조 변경과 전체적인 리팩토링 필요성을 느껴 작업 시작

 

2. 코드 리팩토링

1) 3차 구현

- 현재 플레이어가 대화하고 있는 퀘스트 대상을 GameManager 에서 int questNum으로 관리 

- questNum 을 기준으로 DialogText.cs 스크립트를 사용하여 TutoralText.csv 파일에서 읽어와 대화를 진행

- TutoralText.csv 에서 QuestGet을 통해 QuestTab의 퀘스트 정보를 받아오도록 구성

- QuestTab에서 questNum의 QuestSlot 프리팹을 생성하여 정보를 받아두고 퀘스트 처리

 

TutoralText.csv
QuestTab.csv

2) 리팩토링

- 퀘스트 등에서 인벤토리의 아이템을 직접 확인하는게 아닌 인벤토리 슬롯명을 변경해두어 적은 비용으로 탐색 가능하도록 함

- 퀘스트 갱신은 아이템 습득 퀘스트는 아이템 습득 시에만, 적 처치 퀘스트는 적 처치 시에만 작동하도록 최적화

 

 

3. 튜토리얼 결과물

 

※ 포션 사용 튜토리얼 추가 예정