▶▷ 상점 슬롯에 아이템 데이터 및 아이콘 적용
아이템 데이터 필드를 만들고 해당 데이터의 개수에 따라 슬롯이 추가되도록 구현하였다.
ShopSlot.cs
public void SetShopItem(ItemData data)
{
itemData = data; // 아이템 데이터 설정
// 아이템 아이콘이 없는 경우 경고 메시지 출력
if (itemData.icon == null)
{
Debug.LogAssertion("itemData.icon 없음");
}
else
{
// 아이템 아이콘을 버튼에 설정
shopItemIcon.sprite = itemData.icon;
}
}
private void SelectShopItem()
{
// 아이템 데이터가 있을 경우, UI에 아이템 선택 처리
if (itemData != null)
{
UIManager.Instance.ShopUI.SelectSlot(this); // 현재 슬롯 선택
UIManager.Instance.ShopUI.ShowDescription(itemData); // 아이템 설명 표시
isSelected = true; // 선택된 상태로 변경
}
}
public void SoldOut(bool isSoldOut)
{
// 품절 상태에 따라 품절 패널을 표시하고 버튼 비활성화
if (isSoldOut)
{
soldOutPanel.gameObject.SetActive(true); // 품절 패널 활성화
shopItemBtn.interactable = !isSoldOut; // 버튼 비활성화
}
}
ShopUI.cs
public void ShowDescription(ItemData itemData)
{
// 아이템 설명을 UI에 표시
description.text = $"{itemData.itemName}\n{itemData.description}\nPrice: {itemData.itemPrice}G";
}
public void SelectSlot(ShopSlot slot)
{
shopSlot = slot; // 슬롯 선택
}
private void Buy()
{
shopSlot.SoldOut(true); // 아이템 구매 시 아이템 품절 처리
description.text = null; // 아이템 설명 초기화
// 선택되지 않은 경우에 대한 추가 로직 필요
}
아이템을 선택하고 구매를 누르면 슬롯이 비활성화되고 Sold Out이라는 표시가 활성화된다.
선택하지 않고 구매 버튼을 누를 경우의 예외처리가 필요할 것 같아 isSelected 플래그를 통해 조건을 다루려고 한다.
▶▷ 트러블 슈팅
막히는 점
1. 상점 슬롯에 아이템 아이콘이 적용되지 않는 현상
2. 아이템을 선택하지 않은 상태로 구매 버튼을 누르면 Null 오류가 뜨는 현상
해결
1. 리스트 참조가 이루어지지 않은 것이 원인이라 new를 통해 할당함
2. 해결중
▶▷ 알게된 점
1. Coroutine과 UniTask 각각의 쓰면 좋은 경우
=> 중간에 꺼야하면 Coroutine 끝까지 가야하면 UniTask
2. UI요소에 interactable이라는 프로퍼티를 사용하여 사용자 입력에 반응 여부 조절 가능
ex) shopItemBtn.interactable = !isSoldOut; // 버튼 비활성화
'게임 개발 공부 기록' 카테고리의 다른 글
50일차 - RPGProject 팀 프로젝트 마무리 (0) | 2025.04.03 |
---|---|
49일차 - RPGProject 팀 프로젝트 5 (0) | 2025.04.02 |
47일차 - RPGProject 팀 프로젝트 3 (0) | 2025.03.31 |
46일차 - RPGProject 팀 프로젝트 2 (0) | 2025.03.28 |
45일차 - RPGProject 팀 프로젝트 1 (0) | 2025.03.27 |