[2025_10_23]다양한 미니게임이 있는 메타버스만들기(GameManager캐싱해서 쓰다가 발생한 오류 및 저장 데이터 Struct로 구조변경->메모리 효율성)
2025. 10. 23. 20:46ㆍTIL
오늘 한 일
- 저장 / 불러오기 기능 구현
- 대화 후 미니게임 입장 로직 구현
구현 내용
- 플레이어 정보와 각 미니게임의 최고 점수를 저장하고 불러오는 기능을 구현함.
- 플레이어 정보는 현재 기본 구조만 구성했으며, 추후 꾸미기 및 아이템 시스템이 추가되면 함께 확장 예정.
문제 상황
- GameManager 인스턴스 접근 시 초기화 시점 문제 발생.
- 클래스 최상단에서 GameManager gameManager = GameManager.Instance;
선언하였는데 제대로 GameMangaer객체가 들어오지 않는 상황 발생
해결 방법
- GameManager.Instance 호출을 필드 선언 시점이 아닌, 필요한 곳에서 GameManager.Instance.~로 호출하도록 변경.
- 다른 변수들도 클래스 최상단에서 직접 초기화하지 않고, Init() 메서드로 분리 후
Start()에서 호출하여 초기화 시점 명확히 함.
튜터님 피드백
저장용 데이터 구조는 struct 사용 권장
- class 대신 struct를 사용하면 Heap 영역 할당을 줄여 최적화에 유리.
- 예시:
[Serializable] public struct PlayerData { public string playerName; public int gold; public int selectedCharacterID; }
- 이후 모든 데이터 저장 구조체(class) 를 struct로 변경하여 메모리 효율성 개선.
오늘의 배움
- struct를 활용한 데이터 관리가 경량화 및 최적화에 도움이 됨을 학습.
- 코드 구조를 깔끔하게 유지하려면 초기화 로직을 별도 메서드(Init)로 분리하는 것이 유지보수에 유리함.
- 쓸거면... 제대로 알고 쓰자... 지금은 간단한 코딩스타일 문제여서 아 그렇구나 하고 넘길 수 있었지만... 크리티컬한 에러라면 끔찍하다.
'TIL' 카테고리의 다른 글
| [2025_10_27]다양한 미니게임이 있는 메타버스만들기-3(AnimatorOverrideController,RuntimeAnimatorController) (0) | 2025.10.27 |
|---|---|
| [2025_10_24]다양한 미니게임이 있는 메타버스만들기-2(유니티 생명 주기 및 주기에 따른 스크립트 실행 순서 관련) (0) | 2025.10.24 |
| [2025_10_22]DDD아키텍쳐 (0) | 2025.10.22 |
| [2025_10_21]발표 정리 및 발표 (0) | 2025.10.21 |
| [2025_10_20]statement와 expression (0) | 2025.10.20 |