TIL

ATM 입출금 기능 전체 구현 및 입력 처리 완성

youngjin02 2025. 6. 5. 22:36

✅ 작업한 내용

  1. 입금 UI 구성 (STEP 5)
    • Deposit 오브젝트 구성
    • Vertical Layout Group + Content Size Fitter로 버튼 정렬
    • 10,000 / 30,000 / 50,000 버튼 + 직접 입력 InputField + 뒤로 가기 버튼 구성
  2. 출금 UI 구성 (STEP 6)
    • Withdraw 오브젝트 구성
    • 입금 UI와 동일한 구조로 출금 화면 구성
  3. UI 전환 기능 구현 (STEP 7)
    • PopupBank.cs에 ShowATM(), ShowDeposit(), ShowWithdraw() 함수 작성
    • 버튼 이벤트에 OnClick()으로 연결
    • Start()에서 ShowATM() 호출로 기본화면 설정
  4. 버튼을 통한 입금 기능 구현 (STEP 8)
    • Deposit(int amount) 메서드에서 금액 계산 및 UI 갱신 처리
    • cashDisplay, balanceDisplay의 Refresh() 호출로 UI 반영
  5. 직접 입력 입금 구현 (STEP 9)
    • InputField에서 텍스트 받아 int.TryParse()로 숫자 변환
    • 금액이 0보다 작거나 현금 부족 시 입금 불가 처리
    • 숫자 외 입력 차단: InputField.ContentType = Integer Number
  6. 출금 기능 구현 + 팝업 경고 (STEP 10)
  • Withdrawal(int amount), WithdrawalInput() 메서드 구현
  • 출금 금액이 잔액보다 많으면 popupErrorUI.SetActive(true)로 경고 표시
  • 팝업 확인 버튼 누르면 SetActive(false) 처리
  • 입금/출금 각각의 InputField 따로 선언 및 연결 (depositInputField, withdrawInputField)

🧠 배운 점

  • UI를 일관되게 정렬하려면 Vertical Layout Group를 사용하는 것이 좋다.
  • Unity에서 InputField는 ContentType = Integer Number로 설정하면 숫자 외 입력을 막을 수 있다.
  • 버튼에 OnClick 이벤트로 매개변수가 있는 함수를 연결하면 동적으로 값을 전달할 수 있어 유연한 동작 구현이 가능하다.
  • 하나의 스크립트에서 여러 UI 오브젝트(InputField 등)를 다룰 때는 필드를 나눠서 명확하게 연결해야 충돌을 방지할 수 있다.
  • 팝업 UI는 SetActive(true/false)로 간단히 상태를 전환할 수 있으며, UI 충돌 방지를 위해 기본 화면 전환 로직(ShowATM())도 잘 활용해야 한다.
  • 출금 / 입금 시 조건문으로 금액 유효성(0 이상, 충분한 잔액 등)을 먼저 체크해야 UI나 게임 흐름이 꼬이지 않는다.