inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Task 구현

QuestSystemSaveTest 중 오류가 났습니다

283

Truefalse

작성한 질문수 4

0

 

오류 난 콘솔창입니다.

 

저 콘솔창에서 더블클릭해서 들어가보면

 

하이라이트한 줄이 문제가 있다고 나오는데 오류 메세지는 Quest.cs의 103번째 줄을 가리켜서 가보니

OnRigster 함수 안에 저 줄을 가리키더라고요.

 

어떤 문제인지 알 수 있을까요 지금까지 그대로 따라왔는데 오류가 떠서 뭔지 모르겠어요 ㅜㅠ

 

unity

답변 2

0

Developer G

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

오류의 내용이 OutOfRange인 것으로 보아

71번줄 public TaskGroup CurrentTaskGroup => taskGroups[currentTaskGroupIndex];

이 부분에서 오류가 나고 있는 것으로 보이는데요, 이는 Quest에 TaskGroup이 하나도 없어서 생기는 문제로 보입니다.
QuestDatatabase나 AchievementDatabase에 TaskGroup이 한 개도 설정이 안된 Quest/Achievement가 있는지 확인해보시는게 좋을 것 같습니다.

이와 비슷한 문제가 있으시던 다른 수강생분도 AchievementDatabase에 등록한 Achievement에 문제가 있던 경우였습니다.

감사합니다.

0

Truefalse

Achievement_Test 객체에 Task를 넣었더니 해결됐어요! 감사합니다.

그럼 업적을 넣고싶지 않으면 그냥 Achievement_Test 스크립터블 오브젝트를 지우면 되는건가요??

 

1

Developer G

AchievementDatabase에 넣어야 업적으로 등록이 되기 때문에,
나중에 해당 업적을 쓰실 수도 있으실거 같으시면 AchievementDatabase에서만 지우고 보관하시거나(ScriptableObject의 장점이죠!),
아예 삭제해버리겠다하시면 AchievementDatabase에서 지우시고 Achievement ScriptableObject 자체도 삭제하시면 됩니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

이상준님, 문제를 겪고 계신 QuestSystemSaveTest 중에 발생하는 오류에 대해 알아보았습니다. 해당 오류는 배열의 범위를 벗어나 접근하려고 할 때 발생하는 IndexOutOfRangeException 오류로 보입니다. 이는 TaskGroup 배열의 길이보다 큰 인덱스에 접근하려고 했을 때 주로 발생합니다.

이전에 비슷한 경우를 겪은 다른 수강생의 문제에 대한 답변이 하나 있습니다. 다음 링크를 참고해보시기 바랍니다:
- QuestSystemTest 마지막에서 실행에러가 났습니다!

이 링크에 있는 답변에 따르면, 에러는 Quest.OnRegister() 메서드 내부에서 일어나고 있으며, Quest 스크립트의 OnRegister 함수 내부의 문제를 확인해야 할 것 같습니다. 에러가 정확히 어떤 줄에서 발생하는지 분석해보고, 해당 부분의 코드와 컨텍스트를 확인하시면 문제를 해결하는 데 도움이 될 것입니다.

주의할 점은 문제의 정확한 원인이 OnRegister 내부의 어떤 논리적 오류에서 비롯되었을 수 있다는 것입니다. 예를 들어, taskGroups 배열이 초기화되지 않았거나, currentTaskGroupIndextaskGroups의 유효한 범위를 벗어난 값을 가지고 있을 수 있습니다. 만약 해당 배열에 할당된 값이 없거나 Null 상태라면, 이를 참조하려고 했을 때 IndexOutOfRangeException 오류가 발생할 수 있습니다.

에러 메시지에 나타나는 특정 줄 번호(예: Quest.cs의 103번째 줄)를 직접 확인하여, 해당 코드 라인이 올바른 배열 인덱스에 접근하고 있는지, 배열이 제대로 생성 및 초기화되었는지를 검토하시는 것이 해결의 실마리가 될 것입니다.

혹시 이전 답변이 문제를 해결하는 데 도움이 되지 않는다면, 코드의 다른 부분도 검토하면서 프로젝트 구성과 연결된 오브젝트에 문제가 없는지 확인해 보실 필요가 있을 것 같습니다.

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

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

0

29

2

Quest System의 확장성에 대한 질문

0

108

1

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

0

145

2

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

0

170

2

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

0

151

2

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

0

114

2

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

0

102

2

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

0

168

2

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

1

131

3

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

0

87

1

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

0

121

1

Task 에서 Object 타입 사용

0

122

2

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

0

220

1

Destroy() 지연 파괴에 관하여

0

142

1

Action & Delegate

0

181

2

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

0

281

1

궁금한게있습니다

0

295

1

스크립터블 오브젝트 Instantiate?

0

441

1

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

0

343

1

Quest Cancel() 메소드

0

267

2

Task의 IsEqual

0

230

1

실전예제 UI 자료

0

198

1

스크립터블 오브젝트

1

331

1

Task 예시

1

170

1