inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Lập trình hệ thống Unity Pt.1 - Gói tất cả trong một về các hệ thống cốt lõi để hiện thực hóa trò chơi thương mại

UserDataManager 클래스 hasSaveError 처리

23

Jorn

4 câu hỏi đã được viết

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

Câu trả lời 2

0

burningcarrot

안녕하세요! BurningCarrot 버닝캐럿입니다. 문의해 주신 내용에 답변 드립니다.

개별적인 유저 데이터 클래스를 보시면 제가 SaveData() 함수에서 에러 처리를 추가로 하고 있음을 확인하실 수 있습니다. hasSaveError가 true가 되면 SaveData() 함수 중 어딘가에서 추가로 에러로그를 출력할 것입니다. 그 로그를 보시면 어디에서 버그가 발생했는지 확인이 가능해집니다. SaveData() 함수에서 에러가 발생할 원인은 PlayerPrefs를 잘못 사용하는 경우 밖에 없으므로 어떤 부분에서 PlayerPrefs를 잘못 사용했는지를 살펴보면 됩니다.

image.png

 

0

Jorn

안녕하세요 답변 감사합니다.

디버깅할때 어떻게 확인하고 대처하는지 알려주셨는데요. 저는 디버깅이 아니라 게임이 출시되었다면 어떻게 확인하고 대처하는지가 궁금합니다. 지금 알려 주신 것으로는 확인과 대처가 어려워서요

0

burningcarrot

게임이 출시되기 전 QA 단계에서 충분히 테스트를 해서 에러를 방지해야 합니다. 게임 데이터를 저장하는 기능은 출시 후 에러가 발생할 경우 유저 플레이 경험과 게임의 평가에 치명적인 영향을 미치기 때문에 특히나 꼼꼼하게 테스트를 해주어야 합니다. 만약 부득이하게 출시 후에 에러가 발생하는 것이 확인되었을 경우, 빠르게 수정하여 패치를 하는 것으로 대응해야 합니다.

0

communityai8509

안녕하세요, 인프런 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

22

2

싱글턴패턴

0

29

2

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

0

45

2

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

0

43

1

BaseUI, UIManager

0

58

3

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

0

76

2

UserDataManager 코드 질문입니다.

0

98

2

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

0

110

1

데이터 로드 관련 질문

0

91

2

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

0

76

2

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

0

110

2

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

0

97

2

userDataList Json으로 저장

0

105

2

Lobby 프리팹 구성 질문

0

105

3

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

0

107

2

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

0

148

2

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

1

160

2

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

0

90

1

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

0

153

1

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

0

112

2

아이템 필터 기능

0

149

1

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

0

183

2

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

0

229

1

안녕하세요 일시정지부분

0

172

2