▶▷ 판매, 구매
판매 목록에서 클릭 시 구매가 가능하고 보유 목록에서 클릭 시 판매가 가능하도록 구현했다
private void InitShopSlot()
{
// 기존 슬롯들 삭제
foreach (Transform child in slot)
{
Destroy(child.gameObject);
}
shopSlots.Clear(); // 슬롯 리스트 초기화
// 새로운 슬롯들을 생성하여 상점에 추가
for (int i = 0; i < shopItemDatas.Count; i++)
{
ShopSlot newSlot = GameObject.Instantiate(slotPrefab, slot);
if (i < shopItemDatas.Count)
{
newSlot.SetShopItem(shopItemDatas[i]); // 아이템 데이터 설정
}
shopSlots.Add(newSlot); // 슬롯 리스트에 추가
}
}
private void InitSellSlot()
{
// 기존 슬롯들 삭제
foreach (Transform child in sSlot)
{
Destroy(child.gameObject);
}
sellSlots.Clear(); // 슬롯 리스트 초기화
// 새로운 슬롯들을 생성하여 상점에 추가
for (int i = 0; i < invenItemDatas.Count; i++)
{
SellSlot newSlot = GameObject.Instantiate(sellSlotPrefab, sSlot);
if (i < invenItemDatas.Count)
{
newSlot.SetSellItem(invenItemDatas[i]); // 아이템 데이터 설정
}
sellSlots.Add(newSlot); // 슬롯 리스트에 추가
}
}
private void Buy()
{
// 선택하지 않은 경우
if (shopSlot == null)
{
return;
}
ItemData itemData = shopSlot.GetItemData();
if (itemData != null)
{
invenItemDatas.Add(itemData);
}
shopSlot.SoldOut(true); // 아이템 구매 시 아이템 품절 처리
description.text = null; // 아이템 설명 초기화
shopSlot = null;
InitSellSlot();
}
private void Sell()
{
// 선택하지 않은 경우
if (sellSlot == null)
{
return;
}
ItemData itemData = sellSlot.GetItemData();
if (itemData != null)
{
invenItemDatas.Remove(itemData);
}
description.text = null; // 아이템 설명 초기화
sellSlot = null;
InitSellSlot();
}
슬롯이 추가되는 기준이 데이터의 유무이기 때문에 아이템을 구매하면 슬롯에서 데이터를 받아와 인벤토리 아이템 데이터 리스트에 Add를 하고
판매하면 Remove를 한 다음 Init~~ 메소드를 통해 초기화 시켜주면 데이터에 맞춰 슬롯이 생성되는 방식이다.
'게임 개발 공부 기록' 카테고리의 다른 글
51일차 - Abyss_Slayer 최종 팀 프로젝트 1 (전체 구조 설계) , 3D 최적화 (1) | 2025.04.04 |
---|---|
50일차 - RPGProject 팀 프로젝트 마무리 (0) | 2025.04.03 |
48일차 - RPGProject 팀 프로젝트 4 (0) | 2025.04.01 |
47일차 - RPGProject 팀 프로젝트 3 (0) | 2025.03.31 |
46일차 - RPGProject 팀 프로젝트 2 (0) | 2025.03.28 |