최종프로젝트 진행상황
오늘의 작업 :
중복되는 코드 개선
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