TIL_240208

Z_제트·2024년 2월 8일
0

TODAY I LEARNED

목록 보기
72/88
post-thumbnail

to do_오늘 할 일

  • 최종프로젝트 ing

retro_오늘 한 일(회고)

최종프로젝트 진행상황

오늘의 작업 :

  • 상점 구매 방식 리뉴얼
    • Unit, Room, Item 랜덤 뽑기 시스템 도입
    • Ground 는 돈으로 구매 가능

중복되는 코드 개선

e.g. 유닛 1회뽑기 & 3회뽑기 진행할 때 코드적으로 중복되는 부분이 많아 매개변수를 활용해 다음과 같이 변경했다.
그래서 1회뽑기 버튼 눌렀을 땐 ClickGachaUnit(1);
3회뽑기는 ClickGachaUnit(3); 해주면 된다.

Shop_PopupUI.cs

private void ClickGachaUnit(int count)
{
    if (_myGachaUnits != null)
    {
        _myGachaUnits.Clear();
    }

    if (Main.Get<GameManager>()._playerMoney >= count * 1000) // 금액 계산 로직
    {
        Main.Get<GameManager>().ChangeMoney(-count * 1000);
        Debug.Log("구매완료했습니다.");
        Debug.Log($"잔액 : {Main.Get<GameManager>()._playerMoney}");

        for (int i = 0; i < count; i++)
        {
            _myGachaUnits.Add(RandomPickUnit());
            Debug.Log($"{_myGachaUnits[i].Key}");
        }

        GachaResult_PopupUI ui = Main.Get<UIManager>().OpenPopup<GachaResult_PopupUI>("GachaResult_PopupUI");
        ui.GachaUnitData = _myGachaUnits;
    }
    else // 보유 금액 부족 시
    {
        Error_PopupUI errorUI = Main.Get<UIManager>().OpenPopup<Error_PopupUI>("Error_PopupUI");
        errorUI.curErrorText = "돈이 부족해서 구매할 수 없습니다.";
    }
}

작성하면서
ClickGachaUnit 과 ClickGachaRoom, ClickGachaItem
이 친구들끼리도 중복되는 내용이 꽤 많은데
얘네들은 어떻게 개선을 할 수 있을지 아직 고민중이다.

private void ClickGachaRoom(int count)
{
    if (_myGachaRooms != null) 
    {
        _myGachaRooms.Clear();
    }

    if (Main.Get<GameManager>()._playerMoney >= count * 1000)
    {
        Main.Get<GameManager>().ChangeMoney(-count * 1000);
        Debug.Log("구매완료했습니다.");
        Debug.Log($"잔액 : {Main.Get<GameManager>()._playerMoney}");

        for (int i = 0; i < count; i++)
        {
            _myGachaRooms.Add(RandomPickRoom());
            Debug.Log($"{_myGachaRooms[i].Key}");
        }

        GachaResult_PopupUI ui = Main.Get<UIManager>().OpenPopup<GachaResult_PopupUI>("GachaResult_PopupUI");
        ui.GachaRoomData = _myGachaRooms;
    }
    else
    {
        Error_PopupUI errorUI = Main.Get<UIManager>().OpenPopup<Error_PopupUI>("Error_PopupUI");
        errorUI.curErrorText = "돈이 부족해서 구매할 수 없습니다.";
    }
}
private void ClickGachaItem(int count)
{
    if (_myGachaItems != null)
    {
        _myGachaItems.Clear();
    }

    if (Main.Get<GameManager>()._playerMoney >= count * 1000)
    {
        Main.Get<GameManager>().ChangeMoney(-count * 1000);
        Debug.Log("구매완료했습니다.");
        Debug.Log($"잔액 : {Main.Get<GameManager>()._playerMoney}");

        for (int i = 0; i < count; i++)
        {
            _myGachaItems.Add(RandomPickItem());
            Debug.Log($"{_myGachaItems[i].Key}");
        }

        GachaResult_PopupUI ui = Main.Get<UIManager>().OpenPopup<GachaResult_PopupUI>("GachaResult_PopupUI");
        ui.GachaItemData = _myGachaItems;
    }
    else
    {
        Error_PopupUI errorUI = Main.Get<UIManager>().OpenPopup<Error_PopupUI>("Error_PopupUI");
        errorUI.curErrorText = "돈이 부족해서 구매할 수 없습니다.";
    }
}

또한 Unit, Room, Item 모두 랜덤으로 픽하는 로직도 비슷 !
(이 부분도 어떻게 개선을 할 수 있을지 고민중 !)

private CharacterData RandomPickUnit()
{
    return GachaUnitItems[Random.Range(0, GachaUnitItems.Count)];
}

private RoomData RandomPickRoom()
{
    return GachaRoomItems[Random.Range(0, GachaRoomItems.Count)];
}

private ItemData RandomPickItem()
{
    return GachaItemItems[Random.Range(0, GachaItemItems.Count)];
}

북적북적그잡채.jpg

profile
trying to make the world a better place with a cool head and warm heart

0개의 댓글