• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

QuestTargetMarker 스크립트 오류

22.04.23 01:33 작성 조회수 146

0

private Dictionary<Quest, Task> targetTasksByQuest = new Dictionary<Quest, Task>();

 

private void OnDestroy()

    {

        QuestSystem.Instance.onQuestRegistered -= TryAddTargetQuest;

 

        foreach ((Quest quest, Task task) in targetTasksByQuest)

        {

            quest.onNewTaskGroup -= UpdateTargetTask;

            quest.onCompleted -= RemoveTargetQuest;

            task.onStateChanged -= UpdateRunningTargetTaskCount;

        }

    }

 

에러내용

1. CS1061 - 'KeyValuePair<Quest, Task>'에는 'Deconstruct'에 대한 정의가 포함되어 있지않고, 'KeyValuePair<Quest, Task>' 형식의 첫 번째 인수를 허용하는 엑세스 가능한 확장 메서드 'Deconstruct'이(가) 없습니다. using 지시문 또는 어셈블리 참조가 있는지 확인하세요.

2. CS8129 - 2 out 매개 변수 및 void 반환 형식을 사용하는 'keyValuePair<Quest, Task>' 형식에 대한 적절한 분해 인스턴스 또는 확장 메서드를 찾을 수 없습니다.

 

 

1. foreach문에서 빨간색으로 표시한 부분이 에러가 계속 나고 있습니다.  올려주신 수업자료를 복붙해도 4번 강의를 계속 돌려보며 고쳐도 고쳐지지가 않네요...

2. 혹시 수업 자료 풀버전은 따로 올린곳이 있을까요? 현재 챕터마다 수업자료가 흩어져있거나 누락된게 있어서 보기가 어렵네요..

답변 2

·

답변을 작성해보세요.

1

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

정보가 부족하여 해당 부분이 오류를 띄우는 이유에 대해선 정확히 알 수 없으나, 유니티나 비주얼 스튜디오가 구버전이라 C# Net 버전이 낮은게 아니신가 추측해봅니다. 

해당 부분을 다음과 같이 수정하시면 진행하실 수 있습니다.

        foreach (var keyPair in targetTasksByQuest)

        {
            var quest = keyPair.key;
            var task = keyPair.value;

            quest.onNewTaskGroup -= UpdateTargetTask;

            quest.onCompleted -= RemoveTargetQuest;

            task.onStateChanged -= UpdateRunningTargetTaskCount;

        }

전체 스크립트 파일은 강의 마지막 영상에 업로드 해놨으니 확인해보시면 될 것 같습니다.
감사합니다.

호빵님의 프로필

호빵

질문자

2022.04.23

감사합니다. 유니티는 최신버전을 쓰고있고 비쥬얼 스튜디오는 2019버전을 쓰고 있어서 버전을 2022로 바꾸었는데도 오류가 계속 떠서 알려주신 방법으로 해결하였습니다.

0

Hyodong Woo님의 프로필

Hyodong Woo

2022.04.24

저도 동일한 오류였는데.. 답변주신 내용은 수정해서 해결했습니다.