• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

Quest Cancel() 메소드

24.04.18 01:36 작성 조회수 76

0

Quest.cs

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

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

OnRegister()에서

task.onSuccessChanged += OnSuccessChanged;

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

답변 2

·

답변을 작성해보세요.

1

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

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

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

감사합니다.

0

정지훈님의 프로필

정지훈

질문자

2024.04.18

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

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

 

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

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

답변이 늦어 죄송합니다.