[Unity] 퀘스트 수행 버그 해결

고현규·2024년 1월 19일
0

문제

Damage Upgrade 퀘스트 중에 HP 같은 퀘스트와 관련 없는 강화 버튼을 눌러도 퀘스트가 클리어 되는 버그가 있었다.

시도한 내용

[SerializeField] private QuestType questType;

버튼에 Enum 타입인 QuestType 변수를 Serialized 하여 각 버튼이 어떤 타입인지 Inspector 상에서 지정해주었다.

그렇게 해당 되는 강화만 달성률이 오르게 정상적으로 작동 됐지만 새로운 문제가 발생했다.
퀘스트가 진행 중인 도중에만 달성률이 오르게 되었다.
즉, Damage Upgrade 진행 도중 HP Upgarde을 하면 HP 가 Lv 2가 되지만,
HP Upgrade 퀘스트가 수행 될 때는 2가 아닌 값 1로 시작이 된다.

해당 문제를 임시방편으로 아래와 같이 해결했다.

해결

이런식으로 각 버튼의 타입을 검사하고 해당하는 DB의 index로 직접 값을 넣어주었다.
다만, 좋은 해결 방법은 아니다. Json파일의 인덱스 부분을 수정하는 일이 생긴다면 순서가 전부 꼬이고 모두다 일일이 찾아가 수정해야 될 일이다.

알게 된 내용

전략 패턴을 사용하여 해결할 수 있음을 알았다.
각 퀘스트마다 해결해야 할 부분이 다르기 때문에 Interface를 상속받는 각자 클래스를 만들어 할당해주도록 하자.

profile
게임 개발과 기획

0개의 댓글