✅ 오늘 구현한 주요 내용
1. ATM UI 기본 구조 제작
- PopupBank를 중심으로 메인 ATM UI 제작.
- 사용자 이름, 보유 현금, 통장 잔액 출력 구성.
- string.Format("{0:N0}")으로 천 단위 콤마 처리.
- 타이틀 텍스트는 Bold 설정으로 강조.
2. UserData 클래스 및 Json 저장 방식 구현
- 유저 정보를 담는 UserData 클래스 작성: 이름, 현금, 잔액.
- [System.Serializable] 적용으로 Json 직렬화 가능하게 처리.
- 저장 시 JsonUtility.ToJson(userData) → 파일 저장
- 로드 시 File.ReadAllText() → JsonUtility.FromJson<UserData>()로 파싱
3. GameManager 싱글톤 구성
- GameManager.Instance를 통해 전역 접근 가능하게 구성.
- 내부에 UserData userData 보유 및 초기화.
- 저장 파일이 존재하지 않으면 기본값(name, 100,000, 50,000)으로 생성.
4. UI 연동 및 실시간 데이터 반영
- Refresh() 메서드로 UI 값 실시간 업데이트 처리.
- 금액 변경(입금/출금) 후 Refresh() 호출로 반영.
5. 입출금 UI와 로직 구현
- 입금/출금 화면 전환 UI Panel 구성 및 버튼 이벤트 연결.
- 버튼 클릭 시 금액을 매개변수로 전달해 통장/현금 간 이동 처리.
- InputField를 통한 직접 입력 입출금 구현.
- 입력값 검증 및 숫자만 입력 가능하도록 제한.
6. 에러 처리 및 팝업 표시
- 금액 부족 시 PopupError를 통해 사용자에게 알림 표시.
- 팝업 확인 시 SetActive(false) 처리로 닫기.
7. Json 기반 저장/불러오기 시스템 구현
- 저장 시:
-
복사편집string json = JsonUtility.ToJson(userData); File.WriteAllText(path, json);
- csharp
- 불러오기 시:
-
csharp복사편집string json = File.ReadAllText(path); userData = JsonUtility.FromJson<UserData>(json);
- 금액이 변경되는 모든 로직에서 자동 저장 적용
🔍 새롭게 알게 된 점
- Unity의 JsonUtility는 [System.Serializable] 클래스만 직렬화 가능하며, public 필드만 저장됨.
- Application.persistentDataPath를 이용해 모든 플랫폼에서 안전한 경로에 Json 저장 가능.
- File.Exists()로 파일 존재 여부 체크 후 초기화 여부 결정 가능.
⚠️ 어려웠던 점 / 해결 방법
문제해결
| Json 파일 저장 위치가 헷갈렸음 | Application.persistentDataPath 사용으로 고정 경로 확보 |
| 금액이 바뀌어도 UI가 갱신되지 않음 | 데이터 변경 후 Refresh() 호출로 즉시 UI 반영 |
📌 내일 목표
- 선택 과제인 로그인/회원가입 시스템에 Json 저장 적용
- 각 유저별로 Json 파일 생성 (ID.json) → 로그인 시 해당 파일 로딩
- 비밀번호 오류 및 중복 ID 처리 등 예외 처리 구현
'팀스파르타 내일배움캠프' 카테고리의 다른 글
| Unity Skill UI가 최적화되지 않은 문제 해결 (0) | 2025.06.17 |
|---|---|
| Unity UI Panel 개발 - 문제해결 과정 (1) | 2025.06.12 |
| 📆 2025.05.28 TIL - Unity 10기 배치고사 복습 (1) | 2025.05.28 |
| 🧗 JumpKing 3D - Unity 과제 최종 TIL (0) | 2025.05.23 |
| 🎮 Unity 개인 과제 – 점프킹 3D 기능 구현 완료 (1) | 2025.05.23 |