inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지

UserDataManager 클래스 hasSaveError 처리

2

Jorn

작성한 질문수 4

0

  public void SaveUserData()
    {
        bool hasSaveError = false;

        for (int i = 0; i < UserDataList.Count; i++)
        {
            bool isSaveSuccess = UserDataList[i].SaveData();
            if(!isSaveSuccess)
            {
                hasSaveError = true;
            }
        }

        if(!hasSaveError)
        {
            ExistsSavedData = true;
            PlayerPrefs.SetInt("ExistsSavedData", 1);
            PlayerPrefs.Save();
        }
    }

여기로직에서 hasSaveError가 실패로 발생하면 개발자 입장에서는 어떻게 버그를 알 수 있을까요?
그리고 개발자는 어떻게 대처를 해야 될까요??

C# unity 객체지향 game-programming

답변 1

0

인프런 AI 인턴

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

SaveUserData() 메서드에서 hasSaveError 플래그는 저장 과정에서 에러가 발생했는지 여부를 판단하는 역할을 합니다. 이 메서드를 통해 여러 UserData 객체의 저장 성공 여부를 개별적으로 판단하여 최종적인 저장 상태를 결정합니다.

버그 탐지 및 대응 방법

  1. 에러 로그 추가: 저장 실패 시, 즉 isSaveSuccess가 false일 때마다 로그를 찍어 에러가 발생했음을 개발자에게 알릴 수 있습니다. Debug.LogError()를 사용하여 상세한 오류 메시지를 제공하면, 문제가 발생한 부분을 빠르게 감지할 수 있습니다.

    if (!isSaveSuccess)
    {
        hasSaveError = true;
        Debug.LogError($"Saving data failed for index {i}");
    }
    
  2. 예외 처리: 각 SaveData() 메서드 내에서 예외가 발생할 수 있는 부분을 try-catch 블록으로 감싼 후, 예외 발생 시에도 에러 로그를 남기도록 처리할 수 있습니다.

  3. 에러 알림 및 사용자 피드백: 저장 실패 시 사용자에게 알림을 주거나, 재시도할 기회를 부여하는 UI 피드백을 제공할 수 있습니다. 이를 통해 사용자 경험을 최소한으로 해칠 수 있습니다.

  4. 실패한 데이터 추적: 어떤 UserData 객체에서 오류가 발생했는지 추적하여 문제를 구체화하고 해결책을 강구할 수 있습니다.

  5. 테스트 및 검증: 가능한 시나리오를 테스트하여 문제가 발생할 수 있는 지점을 미리 파악하고 해결 방안을 사전에 준비합니다.

개발자는 이러한 방법을 고려하여 버그 발생 시 문제를 발견하고, 필요한 경우 즉각적인 대처를 할 수 있습니다.

관련 질문이 있다면 아래 링크도 참고해보세요:
- 유니티 시스템 프로그래밍에서의 데이터 저장 이슈: UserData 저장 관련 다른 질문 및 답변을 통해 지식을 확장할 수 있습니다.

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

제공해주신 자료에 스크립트들이 빠져있습니다

0

6

1

싱글턴패턴

0

23

2

LobbyUIController의 백키가 사라졌는데 왜그런건가요?

0

42

2

무조건 타이틀 씬부터 시작해야하나요?

0

41

1

BaseUI, UIManager

0

52

3

3d프로젝트에 적용해도 무방한가요?ㅁ

0

73

2

UserDataManager 코드 질문입니다.

0

92

2

업적/미션 Pt.3에서 OnClickClaimBtn 호출 시 Sort 부분 호출 동작

0

108

1

데이터 로드 관련 질문

0

89

2

16번 강의에서 ShowUI 함수부분 오타가 있는거 같습니다.

0

73

2

PlayerPrefs 에 대해서 문의드립니다.

0

108

2

다운 받은 자료 용량 관련 문의입니다.

0

94

2

userDataList Json으로 저장

0

103

2

Lobby 프리팹 구성 질문

0

100

3

씬로딩 관련한 질문드립니다.

0

104

2

보충강의를 들었는데도 불구하고 Confirm UI 창이 표시가 되지 않습니다.

0

144

2

Resources폴더의 로드에 대하여 궁금한 것이 있습니다.

1

157

2

LoadData함수가 호출되지 않습니다.

0

87

1

캔버스를 여러 장 사용하는 이유

0

152

1

인피티니스크롤 item의 rect Transform에 Nan값

0

112

2

아이템 필터 기능

0

146

1

[Title씬 구성 관련 질문 : 프리팹]

0

182

2

CSVReader 자세하게 설명 가능하신가요?

0

227

1

안녕하세요 일시정지부분

0

170

2