2024. 8. 13. 21:57ㆍ나의 개발자 기록/본 캠프 개발 일지
2024년 8월 13일 화요일
What I did today : 다양한 오류 해결하기
오늘은 어제 게임이 종료될 때 저장하기가 잘 안 되는 문제가 있었는데, 금방 끝날 줄 알고 대충 넘어갔다가 오늘 오전부터 해결하려고 작업을 진행했습니다. 근데 생각했던 대로 잘 안 고쳐져서 시간이 더 많이 걸렸습니다. 무려 오후 3시까지 오류 해결하는 데에만 사용했는데요.
NullReferenceException: Object reference not set to an instance of an object
GameManager.SaveUserDataAsync () (at Assets/02.Scripts/Manager/GameManager.cs:172)
GameManager.OnApplicationQuit () (at Assets/02.Scripts/Manager/GameManager.cs:60)
본래 회원가입할 때 기존 세팅을 저장하고 불러오는데, 로그인 함수에도 체크를 하기 위해서 넣어놨다가 로그인하고나서 Save를 하면 해당 세이브 로직의 gold 부분의 줄이 Null이 뜨면서 세이브가 되지 않는 상황이 발생했었습니다. 뭐가 원인인지 몰라서 기존의 Instance나 UserInfo가 Null이 뜨는지 체크도 해보고, 인터넷에서 여러 가지 찾아보기도 했는데, 잘 안 됐습니다.
그러다가 LoginManager를 자세히 확인해 본 결과, 제네릭 싱글톤으로 만들어져 있는데도 불구하고, 로그인하고 나서 메인 씬으로 이동되었을 때, 파괴돼서 Null이 뜨는 것 같았습니다. 싱글톤 로직을 제가 만든 게 아니라서 확인해 보니까 인스펙터 창에서 따로 DontDestroyOnLoad의 Bool값을 체크해야 파괴가 안 되는 로직이어서 체크를 하고 테스트를 해보니까 저장 로직이 무사히 잘 되었습니다.
그다음에는 Cloud Save에 저장된 Rcode를 불러와서 덱 편성 씬에 있는 UI에 반영해야 하는데, 다른 팀원 분이 만드셨던 덱 편성 저장 로직을 반대로 만들면 되겠구나 했습니다. 근데 막상 해보니까 잘 안되었고, 뭐가 문제인가 봤더니 UI에 이미지나 텍스트를 반영해 주는 로직을 가져와야 정상적으로 UI에 적용할 수 있었습니다.
다 작업하고 나서 팀원분들에게 공유해 드리고, 다른 팀원분들이 막히신 부분이나 어떤 버그가 생긴 부분을 화면 공유를 통해서 서로 도우면서 해결했습니다. 특히 인게임 부분을 수정하시던 팀원분이 투사체가 한꺼번에 나가는 문제가 있었는데, 이 문제는 기존의 투사체 로직이 합치는 과정에서 예전 버전으로 바뀌어서 생긴 문제였고, 사운드가 제대로 안 나오는 문제는 SoundSorce도 오브젝트 풀을 받아와서 생성되는데, 오브젝트 풀을 수정하면서 게임 매니저의 오브젝트 풀이 이상하게 되어 있던 게 원인이었습니다. 이것도 기존에 했던 것처럼 바꾸니까 오류가 해결이 되었습니다. 그리고 덱 편성 쪽에서 작업하시던 다른 팀원분의 문제도 집단 지성을 통해서 해결했습니다. 저녁을 먹고, 남은 시간에는 TIL을 쓰면서 오늘 하루를 마무리했습니다.
면접 질문 대비 : 박싱, 언박싱을 사용할 때 주의해야 할 점은 무엇일까요?
1. 성능 저하 : 박싱과 언박싱은 힙에 메모리를 할당하고 해제하는 과정을 포함하므로 성능 저하를 유발할 수 있습니다. 빈번한 박싱과 언박싱은 피해야 합니다.
2. 예외 발생 가능성 : 잘못된 타입으로 언박싱을 시도하면 InvalidCastException 예외가 발생합니다. 올바른 타입으로 언박싱해야 합니다.
3. 타입 변환 비용 : 박싱과 언박싱은 추가적인 타입 변환 비용이 발생하므로 가능한 한 값 형식을 사용하여 작업하는 것이 좋습니다.
'나의 개발자 기록 > 본 캠프 개발 일지' 카테고리의 다른 글
2024년 8월 16일 금요일 개발일지 / 유저 테스트 후, 게임 개선하기 (0) | 2024.08.16 |
---|---|
2024년 8월 14일 수요일 개발일지 / 로그아웃 버튼 만들기 + 브로셔 작성 및 꾸미기 (0) | 2024.08.14 |
2024년 8월 12일 월요일 개발일지 / 몬스터 만들기 + 데이터 저장 및 불러오기 (0) | 2024.08.12 |
2024년 8월 09일 금요일 개발일지 / 사운드 적용하기 + UI 디자인 (0) | 2024.08.09 |
2024년 8월 08일 목요일 개발일지 / 사운드 적용하기 + 인트로 씬 꾸미기 (0) | 2024.08.08 |