inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[유니티 레벨 업!] 모듈식으로 개발하는 퀘스트&업적 시스템

Quest 구현

퀘스트 시스템을 확장하면서 생긴 의문점 입니다.

166

고우진

작성한 질문수 26

0

public virtual void Cancel()

{

CheckIsRunning();

Debug.Assert(IsCancelable, "This quest can't be canceled");

State = QuestState.Cancel;

onCanceled?.Invoke(this);

}
퀘스트를 취소할때 CheckIsRunning를 실행하게 된다면 이미 등록되어있는 퀘스트를 취소하는것이기 때문에
Debug.Assert(IsRegistered, "This quest has already been registered"); 무조건 이 구문으로 막아버리게 되는건데 제가 혹시 강의에서 잘못 이해한 부분이 있을까요

unity

답변 2

0

고우진

순간 제가 잘못읽었던거였네요 죄송합니다.
퀘스트를 확장하다가 퀘스트를 등록시키지도 않은상태에서 퀘스트를 취소시킨거였네요

0

Developer G

Assert문이 고우진님의 실수를 제대로 잡아냈다는 좋은 경험이죠!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 고우진님께서 퀘스트 시스템의 “Cancel” 메소드에서의 “CheckIsRunning” 사용에 대한 의문을 남겨주셨네요.

질문에 따르면, “CheckIsRunning” 함수를 호출하면 “Debug.Assert(IsRegistered, ‘This quest has already been registered’);” 부분에서 문제가 발생할 수 있다고 생각하신 것 같습니다. 이 부분에 대해 좀 더 설명드리겠습니다.

“CheckIsRunning” 함수는 퀘스트가 정상적으로 등록되고 실행 중인지를 확인하기 위한 안전 조치로 사용됩니다. 이때, “IsRegistered” 값이 “true”여야 정상적으로 통과할 수 있습니다.

“Cancel” 메소드는 이미 실행 중인 퀘스트를 취소하는 기능이므로, “CheckIsRunning” 함수 내의 “Debug.Assert(IsRegistered, ‘This quest has already been registered’);” 조건은 “true”일 때 통과하고, “false”라면 오류를 발생시키지 않도록 작성되어야 합니다. 만약 이것이 “false”일 때 오류가 발생한다면, “CheckIsRunning” 함수 내에서 “Debug.Assert(!IsRegistered, …);“이 아니라 “Debug.Assert(IsRegistered, …);“로 작성되어 있어야 합니다.

이와 관련하여 추가적으로 도움을 받을 수 있는 링크를 아래에 추천해 드리겠습니다. 같은 강의의 다른 질문 답변에서, 퀘스트 시스템과 관련한 상세한 예시들이 도움될 수 있습니다:

  1. “Quest Cancel() 메소드” - 강의 내 다른 질문에서 비슷한 주제가 다루어졌습니다.

질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Task 구현 28:36 Equals 에서 잘 모르는 부분이 있습니다.

0

23

2

Quest System의 확장성에 대한 질문

0

106

1

공부 방향에 대해 궁금한 점이 있습니다.

0

143

2

End()와 Complete() 함수를 따로 구현한 의도

0

166

2

Target의 value에 Object 자료형 관련 질문입니다!

0

149

2

TaskGroupState에 대하여 질문이 있습니다

0

112

2

Elite와 Normal Germ의 IsTarget()질문입니다.

0

100

2

퀘스트 클리어해도 동일 퀘스트가 노출됩니다

1

129

3

퀘스트 누적 클리어 횟수에 대해 여쭤보고싶습니다.

0

85

1

프로퍼티 사용 질문입니다.

0

118

1

Task 에서 Object 타입 사용

0

120

2

파일 저장방식, 퀘스트 실패에 관하여 여쭤보고싶습니다.

0

218

1

Destroy() 지연 파괴에 관하여

0

140

1

Action & Delegate

0

179

2

강의에서 리워드 관련 언급은 없으셔서 질문드립니다.

0

276

1

궁금한게있습니다

0

294

1

스크립터블 오브젝트 Instantiate?

0

437

1

원하는 타이밍에 퀘스트를 등록하고 싶다면 어떻게 해야할까요

0

339

1

Quest Cancel() 메소드

0

263

2

Task의 IsEqual

0

227

1

실전예제 UI 자료

0

194

1

스크립터블 오브젝트

1

325

1

Task 예시

1

167

1

퀘스트의 상태인 QuestState를 다른 스크립트에서 받을 수 있나요

1

307

2