inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Task의 IsEqual

해결된 질문

225

김기홍

작성한 질문수 1

0

Quest System 구현 강의 마지막에 Quest System Test를 실습하던중 제대로 작동하지 않아 문의 드립니다.

 

디버그를 찍어봤는데 Task Script의 IsTarget() 함수에서 targets.Any(x=>x.IsEqual(target))부분에서 false가 된것이 원인이었습니다.

 

자세히 보니 QuestSystemTest에서 Target을 TaskTarget형태로 넘겨주고,
TaskTarget의 IsEqual에서 TaskTarget형식으로 받아서 문제가 된것이었습니다.

 

이를 방지하기 위해 아래와 같이 TaskTarget인지를 먼저 검사해야된다고 생각하는데,

혹시 제가 놓친부분이 있다면 알려주세요

public override bool IsEqual(object target)
{
    if(target.Equals(this))return true;

    string targetAsString = target as string;
    if (targetAsString == null)
        return false;
    return value == targetAsString;
}

 

unity

답변 1

1

Developer G

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

QuestSystemTest Script의 Update 함수를 보시면 다음과 같은데요,

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
        QuestSystem.Instance.ReceiveReport(category, target, 1);
}

 

실행되는 QuestSystem Script 114번 줄, TaskTarget을 인자로 받는 ReceiveReort 함수를 보시면 다음과 같습니다.

// 114번 줄
public void ReceiveReport(Category category, TaskTarget target, int successCount)
    => ReceiveReport(category.CodeName, target.Value, successCount);


위 함수에서 TaskTarget의 Value를 인자로 108번 줄의 ReceiveReport 함수를 호출하게 되므로,

// 108번 줄
public void ReceiveReport(string category, object target, int successCount)
{
    ReceiveReport(activeQuests, category, target, successCount);
    ReceiveReport(activeAchievements, category, target, successCount);
}

 

Task에게 TaskTarget 자체가 보고 되는 일은 없습니다.
제가 말씀드린 Code들을 확인해보시면 될 것 같습니다.

감사합니다.

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

0

20

2

Quest System의 확장성에 대한 질문

0

104

1

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

0

140

2

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

0

165

2

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

0

148

2

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

0

111

2

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

0

99

2

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

0

165

2

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

1

128

3

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

0

84

1

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

0

117

1

Task 에서 Object 타입 사용

0

119

2

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

0

217

1

Destroy() 지연 파괴에 관하여

0

139

1

Action & Delegate

0

178

2

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

0

274

1

궁금한게있습니다

0

293

1

스크립터블 오브젝트 Instantiate?

0

436

1

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

0

338

1

Quest Cancel() 메소드

0

262

2

실전예제 UI 자료

0

193

1

스크립터블 오브젝트

1

322

1

Task 예시

1

163

1

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

1

305

2