TIL

25.03.24 TIL

gaon99 2025. 3. 24. 21:11

1. 오늘 학습 키워드

송금 기능 및 오류 수정


2. 오늘 학습 한 내용을 나만의 언어로 정리하기

우선 로그인 기능 및 json 저장 및 불러오기를 수정했다

우선 json은 Wrapper 클래스를 생성해서 해당 리스트를 불러왔다.

이 부분은 웹 서핑 및 AI의 도움으로 쓴 방법인데, 아직 이유는 잘 모르겠다. 이 부분은 내일 디테일을 추가할 때, 제외 해보려고한다.

 

우선 송금 기능은 이렇게 작성했고,

이번에도 오류를 뚫고 나가야 주요 구문이 작동이 되도록 했다.

 

받는 사람 id는 UIManager에서 가져오고, 주는 사람 id는 인풋필드에서 받아와서

람다를 사용해서 그 값을 sender와 receiver의 userid를 받아왔고,

userid의 데이터에 접근하여 인풋필드에서 적은 값 만큼 송금이 되도록 생성했다.

public void Transfer()
   {
      string senderId = UIManager.instance.currentUserId;
      string receiverId = receiverField.text;

      int amount = 0;
      
      if(string.IsNullOrEmpty(receiverId)|| !int.TryParse(amountField.text, out amount) || amount <= 0)
      {
         PopupPanel.SetActive(true);
         return;
      }
      
      UsersData sender = GameManager.instance.usersDataList.Find(user => user.userId == senderId);
      UsersData receiver = GameManager.instance.usersDataList.Find(user => user.userId == receiverId);

      if (sender == null || receiver == null)
      {
         PopupPanel.SetActive(true); // 유저 찾지 못함
         return;
      }

      if (sender.balance < amount)
      {
         PopupPanel.SetActive(true);//잔액 부족
         return;
      }
      
      sender.balance -= amount;
      receiver.balance += amount;
      GameManager.instance.SaveUserData(GameManager.instance.usersDataList);
      
      PopupPanel.SetActive(true);
      UIManager.instance.uiText.UpdateUI();
   }

 

오늘은 오전 오후중에 오류 수정을 좀 많이해서 기능 구현은 많이 못했지만.. 오류 수정이 젤 힘들었다..


3. 학습하며 겪었던 문제점 & 에러

 

로그인 기능에 3가지 문제가 있었는데

 

1) json에서 리스트를 불러왔지만, UpdateUI에서 해당 값을 인식을 못했다.

 

UIText부분에서 하나의 유저를 생각을 하고 작성을 했을 때엔,

usersdata.userid; 이런 참조를 통해 수정을 할 수 있었지만

 

유저를 리스트로 받아오며 로그인 하였을 때마다 달라지는 텍스트를 구현하려면 해당 방법은 옳지 못했다.

그래서 리스트의 데이터를 가져오기 위해 .을 엄청 찍어보며 어떻게 닿을 수 있을지 생각해보다

어쩌다보니 현재 UIManager에서 로그인 시에 아이디를 저장하는데. 이 아이디를 사용하면 될거라고 생각하였다.

 

그래서 해당 아이디를 참조하였으나, null 오류가 떴고, 디버깅을 해보고, 왜 오류인지 계속 확인하다

UIManager에 있는 SetUserID 메서드에 오류가 있어서 아이디를 못 가져오는 이유였다.

json을 불러오는 과정에서 여러 개의 원인이 합쳐졌던 것 같다.

 

2) 로그인 버튼을 클릭을 해도 아무 반응이 없다.

해당 부분은 내가 메서드를 제작할 때, 오류를 위에 두고 하위에 주요 구문을 두었기에 패널 비활성화 및 텍스트 업데이트 메서드가 작동을 안했다. 그래서 오류의 원인을 찾아보니. 패스워드를 한글로 적었다..

패스워드를 예를들어 df12라고 했을 때, *로 표시가 되기에, ㅇㄹ12인지, df12인지 확인을 못한 것이다.

패스워드를 해시 시켰더니,, 이런 이슈가 있었다.

그래서 소문자 및 숫자만 입력 가능한 TMP_InputField를 상속받아 스크립트를 제작했는데, 작동을 안해서 내일 디테일 추가하며 수정해보려고한다.

 

3) 아이디만 동일할 시에 패스워드와 상관없이 로그인이 됨

이 부분이 2번에서 잠깐 말했던 내용인데, UI관련 구문을 지웠더니 안넘어져갔고, 덕분에 오류가 있단걸 깨닫게 되었다.

처음에는 로그인 로직이 끝나고 나서 이 부분에 ui 구문을 넣었더니 다음 창으로 넘어가서 해결이 된 줄 알았으나.

아이디만 동일하고 패스워드는 적지 않아도 넘어가는 오류를 발견하고 해당 부분을 지워서 해결 됐다.

private void OnLoginButtonClickAction()
{
    LoginManager.instance.Login();
}

4. 내일 학습 할 것은 무엇인지

팝업 매니저 제작 및 디테일을 추가해보려고 한다.

이미 추가 기능 구현까지 완료했지만. 하루 남았기에 다른 부분에 발을 들이미는것보다, 지금 작업한 부분을 좀 더 수정하는게 좋아보인다.

'TIL' 카테고리의 다른 글

25.03.26 TIL  (0) 2025.03.28
25.03.25 TIL  (0) 2025.03.25
25.03.21 TIL  (0) 2025.03.24
25.03.20 TIL  (0) 2025.03.20
25.03.13 TIL  (0) 2025.03.13