ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2024.2.8
    TIL 2024. 2. 8. 20:39

    오늘은 팀 프로젝트 시작입니다.

    팀프로젝트를 시작할 때 국룰이죠. 한게 없습니다.

    기획만 했습니다.

    ㅎㅎㅎㅎㅎㅎㅎㅎ

     

    그래서 오늘 적을 것은 저번 개인 과제에서 스파르타 던전 들어가기 전 캐릭터의 스탯 확인과 이벤토리를 만드는 것도 있었지만 Bank ATM 시스템을 만드는 것도 있었습니다.

     

    처음에는 스파르타 던전을 만들다가 제출 시간은 다가오는데 완성을 못해서 빠르게 ATM을 만들었었는데요.

    이거에 대한 정리를 하지 않았던 것 같아서 정리해보려고 합니다.

     


     

    버튼을 눌렀을 때 그거에 맞는 UI.SetActive(true)되도록 생성해주었습니다.

    제가 생각했을 때 이 과제의 핵심은 버튼을 눌렀을 때 현금과 통장에 있는 돈이 이동하는 것입니다.

    그래서 버튼을 누르게 되면 그에 맞는 금액의 돈이 이동해야하는 것 입니다.

     

    public void OnInputButton(int n)
    {
        GameManager.instance.SetInputMoney(n);
    }

    금액이 적혀 있는 버튼의 경우 파라미터를 이용해서 이동할 금액을 받을 수 있도록 해주었습니다.

     

    유니티에서 파라미터를 받아서 script로 가져오는 방식이며, 어제 작성한 인벤토리 슬롯 생성과 반대되는 구조입니다.

     

    파라미터의 값을 이용해서 돈의 이동을 만들어보았습니다.

     


     

    금액이 지정되어있는 버튼의 경우는 파라미터를 사용해주면 되지만, 직접 입력하여 원하는 값의 돈을 이동시켜야할 때에는 다른 방법을 사용해줘야합니다.

     

    public void OnSelfInputButton()
    {
        OnInputButton(int.Parse(GameManager.instance.moneyInput.text));
    }

    InputField에 입력된 값을 받게되면 string형태로 들어오는데 그것을 int형식으로 바꿔서 위에 적어둔 함수를 사용해줬습니다.

    여기서 한가지 안한 부분이 생각났는데 아무것도 입력하지 않은 상태에서 버튼을 누르게 된다면 금액을 입력해달라는 UI를 안만들었습니다.

     

    여기서 간단하게 추가해보자면

    public void OnSelfInputButton()
    {
        if(GameManager.instance.moneyInput.text == "")
        {
            GameManager.instance.NoNumberPanel();
        }
        else
        {
            OnInputButton(int.Parse(GameManager.instance.moneyInput.text));
        }
    }

    여기서 NoNumberPanel은 금액을 입력해달라는 UI를 보여주고 1초 뒤에 사라지도록 만드는 함수입니다.

     

     

    'InputField에 숫자가 아닌 다른 값을 입력하게 되면 오류가 나온다!'

    맞는 말입니다. 

    하지만 InputField는 정해진 값만 받을 수 있도록 설정할 수 있습니다.

    정수만 받을 수 있도록 설정해두었습니다.

    참고로 정수이기 때문에 음수도 입력 가능합니다...

    위에 작성하면서 생각난 부분입니다.. 에휴..

     

    생각을 안하고 했기 때문에 다시 수정해보자면

    public void OnSelfInputButton()
    {
        if(GameManager.instance.moneyInput.text == "")
        {
            GameManager.instance.NoNumberPanel();
        }
        else if (int.Parse(GameManager.instance.moneyInput.text) <= 0)
        {
            GameManager.instance.NoNumberPanel();
        }
        else
        {
            OnInputButton(int.Parse(GameManager.instance.moneyInput.text));
        }
    }

    조건을 추가해주면 됩니다. 

     

    이렇게 되면 NoNumberPanel()에 적혀있을 내용은

    값을 제대로 입력해주세요.

    정도가 되겠네요.

     


     

    버튼에 사용될 함수에 파라미터를 넣는 것을 생각한 것은 ATM을 만들고 입니다.

    그전에는 인벤토리에 아이템을 어떻게 넣어주지??????

    만 고민했어가지고 제대로 해결을 못했는데요.

    ATM을 만든 것이 스파르타 던전을 만드는 것에 큰 기여를 했다고 볼 수 있습니다.

     

    간단하게 만드느라 2~3시간 정도 걸린거 같은데요.

    그러다보니깐 위에 수정했던 부분처럼 좀 더 생각했다면 생각나고 추가했을 부분을 놓친 것 같습니다. 좀 아쉽네요.

     

    ATM은 만들면서 어려웠던 점은 마찬가지로 버튼을 눌렀을 때 값을 어떻게 가져오지? 와 입력된 값은 어떻게 가져오는거지? 였습니다.

    둘 다 Unity에서 script로 정보를 가져오는 것이 미숙하여 생긴 일이라 생각되고 ..

     

    그래서 이번 팀 프로젝트에서 UI를 담당했습니다.

    개인프로젝트 때에도 UI 관한 내용이였고 UI 관한 특강도 나왔기 때문에 더 연습한다는 의미로 고르게 되었습니다.

    꾸미는 것에는 자신이 없지만 열심히 만들어보려고 합니다.

     

    화이팅!

     

    'TIL' 카테고리의 다른 글

    2024.2.14  (1) 2024.02.14
    2024.2.13  (1) 2024.02.13
    2024.2.7  (1) 2024.02.07
    2024.2.6  (0) 2024.02.06
    2024.2.2  (0) 2024.02.02
Designed by Tistory.