인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

정지훈님의 프로필 이미지
정지훈

작성한 질문수

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

Quest 구현

Quest Cancel() 메소드

작성

·

172

0

Quest.cs

Complete() 메소드에서 이벤트들을 초기화(해제)시키는데

Cancel() 메소드에서는 이벤트들을 초기화를 안 하는 이유가 있을까요?

OnRegister()에서

task.onSuccessChanged += OnSuccessChanged;

이벤트를 사용해서 Quest를 취소했을 때도 이벤트를 초기화해야 될 것 같다고 생각돼서 질문 남겼습니다!

답변 2

1

Developer G님의 프로필 이미지
Developer G
지식공유자

수강해주셔서 감사합니다.

이후에 보실 QuestSystem Script에서 Quest가 Cancel이되면 Destroy 함수로 Quest를 파괴합니다.
그래서 굳이 event를 초기화해주지 않은 것입니다.
참고로 Quest 완료 시에 event를 초기화시키는건 Quest 완료시엔 Quest가 QuestSystem의 Completed List에 보관되기 때문에 불필요하게 메모리를 차지하고 있지 않게 하기 위해서입니다.

다만, 강의의 코드는 하나의 가이드일 뿐, Complete와 Cancel 함수에 통일성을 주고 싶다고 생각이 드시면 Cancel 함수에도 event 초기화 Code를 넣으셔도 됩니다.

감사합니다.

0

정지훈님의 프로필 이미지
정지훈
질문자

아하 이해가 됐습니다. 감사합니다

그럼 다른 스크립트에서도 이벤트들을 사용할 때 Destroy 로 삭제를 한다면 굳이 이벤트를 초기화할 필요가 없다는 것이죠?

 

Developer G님의 프로필 이미지
Developer G
지식공유자

안녕하세요. 제가 미처 답변 글을 못봤습니다.

Destroy를 할 시 때가되면 가비지 컬렉팅이 되므로 굳이 이벤트를 초기화해주지 않으셔도 됩니다.

답변이 늦어 죄송합니다.

정지훈님의 프로필 이미지
정지훈

작성한 질문수

질문하기