- 개요

위와 같이 로그인 UI를 구성한다
강조한 부분을 중점적으로 구현하며 사용자이름과 비밀번호를 문제없이 입력하면 로그인 버튼이 활성화되고,
입력한 사용자이름과 비밀번호에 문제가 있다면 적합한 에러 메세지를 발생시킨다
- 코드 구성
1) UI_Base 클래스

Bind 함수를 위와 같이 수정하여 기존에 존재하는 Key의 인스턴스들을 바인드하는 경우와
새로운 Key의 인스턴스들을 바인드하는 경우를 분리하여 처리한다

GetEnumFullName 함수를 새롭게 추가한다
로직은 위와 같이 열거형의 멤버를 인자로 받아 "열거형.멤버" 형태의 문자열을 반환한다
해당 함수를 사용하여 특정 UI안에 포함된 열거형의 멤버들을 임의의 값과 연결할 수 있다

GenerateEnumsSerialNumber 함수를 새롭게 추가한다
UI_Base 클래스를 상속받은 클래스에서만 사용할 수 있으며,
인자로 받은 딕셔너리에 해당 함수를 호출한 클래스에 포함된 열거형의 멤버 + 정수값을 저장한다
2) UI_Login 클래스

위와 같이 멤버변수를 추가한다
구성은 다음과 같다
- enumNumbers 딕셔너리 : 포함된 열거형 멤버들과 연결된 정수값을 저장
- _userName 멤버변수 + _password 멤버변수 : 입력 UI에 입력한 값을 저장
- maxUserNameLength 멤버변수 + maxPasswordLength 멤버변수 : 최대 입력 범위
- GameObjects_Btn 열거형 : Button 컴포넌트를 가진 오브젝트를 지정
- GameObjects_Input 열거형 : TMP_InputField 컴포넌트를 가진 오브젝트를 지정
- GameObjects_Text 열거형 : TMP_Text 컴포넌트를 가진 오브젝트를 지정

Awake 함수의 로직은 위와 같다
GenerateEnumsSerialNumber 함수를 호출하여
UI_Login 클래스 내부의 열거형의 멤버들을 정수값과 연결하여 enumNumbers에 저장한다
이후 열거형의 멤버들을 GameObject로 바인드한다

Start 함수의 로직은 위와 같다
enumNumbers에 저장된 열거형의 멤버들과 연결된 정수값을 사용하여 바인드된 오브젝트들을 탐색하여 로직을 수행한다
- GameObjects_Text 열거형 : 에러메세지 비활성화
- GameObjects_Btn 열거형
- Btn_Login 멤버 : Login 이벤트 함수 연결
- GameObjects_Input 열거형
- Input_UserName 멤버 : UpdateUserName 이벤트 함수 연결
- Input_Password 멤버 : UpdatePassword 이벤트 함수 연결

이벤트 함수들을 위와 같이 구성한다
Login 함수의 경우 별다른 로직이 없지만,
UpdateUserName 함수와 UpdatePassword 함수는 입력값을 캐싱하고 ValidateAndUpdateUI 함수를 호출한다

ValidateAndUpdateUI 함수의 로직은 위와 같다
정규표현식을 사용하여 플레이어의 이름이 영어 소문자 + 대문자만을 사용하고 0~9까지의 범위를 지녔는지 확인한다
이후 조건을 판단하고 해당 조건을 매개변수로 하여 EnableLoggingButton 함수를 호출한다
이후 플레이어의 이름 + 비밀번호 입력값의 길이를 판단하고 적합한 에러 메세지를 팝업한다

EnableLoggingButton 함수의 로직은 위와 같다
GameObject로 바인드된 Btn_Login 오브젝트를 가져오고
해당 오브젝트의 interactable 속성과 color 속성을 설정한다
- 최종 실행 결과
'유니티 엔진 - 게임 프로젝트 > 데디케이트 기반 모바일 게임' 카테고리의 다른 글
| 서버 - 최종) 서버의 패킷 처리 구조 설계 (0) | 2025.11.18 |
|---|---|
| 서버 - 1) 서버 구조 설계 (0) | 2025.11.18 |
| 로그인 처리 - 최종) 로그인을 통한 클라이언트 -> 서버로의 패킷 전송 (0) | 2025.11.17 |
| 프로젝트 세팅 - 2) LiteNetLib를 활용한 클라이언트 + 서버 구현 (0) | 2025.11.04 |
| 프로젝트 세팅 - 1) 보조 클래스와 간단한 UI 구성 (0) | 2025.11.04 |