최종프로젝트 진행상황
오늘의 작업 :
오늘은 일단 기본 상점 prefab 을 변경해 EditingShop_PopupUI prefab 을 새로 만들어 Unit 랜덤뽑기(1회, 3회) 로직 작성을 시작해보았다.
EditingShop_PopupUI 에서 가챠 판매 아이템 GachaUnitItems 를 List.Add() 한 다음, RandomPickUnit() 을 통해 랜덤 가챠 진행 후 나온 결과를 주머니_myGachaUnit 에 넣어서 그 데이터를 GachaResult_PopupUI 로 넘겨준다.
GachaResult_PopupUI 에서는 SaveInInventory() 를 통해 받은 데이터(CharacterData)를 Character 로 새로 인스턴스화하여(얕은 복사 이슈) 인벤토리로 옮겨준다.
EditingShop_PopupUI.cs
private void ClickUnit1Btn(PointerEventData eventData) //유닛 1회 뽑기
{
if (_myGachaUnit != null) // 이거 안 해주면 버튼 누를때마다 리스트에 계속 쌓여서 1개가 2개가 되고 .. 계속 증가 이슈.
{
_myGachaUnit.Clear();
}
if (Main.Get<GameManager>()._playerMoney >= 1000) // 금액 계산 로직
{
Main.Get<GameManager>().ChangeMoney(-1000);
Debug.Log("구매완료했습니다.");
Debug.Log($"잔액 : {Main.Get<GameManager>()._playerMoney}");
_myGachaUnit.Add(RandomPickUnit());
Debug.Log($"{_myGachaUnit[0].Key}");
GachaResult_PopupUI ui = Main.Get<UIManager>().OpenPopup<GachaResult_PopupUI>("GachaResult_PopupUI");
ui.GachaUnitData = _myGachaUnit;
}
else // 보유 금액 부족 시
{
Error_PopupUI errorUI = Main.Get<UIManager>().OpenPopup<Error_PopupUI>("Error_PopupUI");
errorUI.curErrorText = "돈이 부족해서 구매할 수 없습니다.";
}
}
private CharacterData RandomPickUnit()
{
return GachaUnitItems[Random.Range(0, GachaUnitItems.Count)];
}
GachaResult_PopupUI.cs
private void ClickCloseBtn(PointerEventData eventData)
{
if (GachaUnitData != null) // 구분 - 인벤토리로 옮기려는 데이터가 유닛 일 때
{
for (int i = 0; i < GachaUnitData.Count; i++)
{
SaveInInventory(GachaUnitData[i]);
}
}
Main.Get<UIManager>().ClosePopup();
}
private void SaveInInventory(CharacterData data)
{
Character newChar = new Character(data);
Main.Get<GameManager>().playerUnits.Add(newChar);
}
내일은 오늘 유닛 뽑기 만든 것처럼
Room 과 Item 에도 뽑기 시스템을 적용해 상점 관련 UI 를 변경할 예정 !