말감로그

[Unity] Valley - 판매 가능한 아이템 설정 본문

TIL

[Unity] Valley - 판매 가능한 아이템 설정

habbn 2024. 10. 30. 14:33
728x90

 

 

호기, 물뿌리개, 도끼 등 필수적인 아이템을 팔지 못하게하고, 과일, 나무, 식물, 씨앗 등을 팔 수 있도록 분리하기 위해 Item Data에 isSellable을 추가하여 각 아이템에 맞게 설정해주었다.

 

 

그리고 판매 창을 열었을 경우, 툴바에서도 해당 아이템은 팔지 못한다는 것을 표시하기 위해 아이콘의 색상을 좀 더 어둡게 표시하고, 판매 창에서도 해당 아이템의 정보가 뜨지 않도록 했다.

 

그러기 위해서 Slot_UI.cs의 슬롯의 아이템을 세팅해주는 함수(SetItem)에서 현재 itemBox가 열려있고, 판매 불가능한 상품일 경우의 조건문을 걸어 color 변화를 주었다.

// Slot_UI.cs

public void SetItem(Inventory.Slot slot)
{
    if (slot != null)
    {
        if (GameManager.instance.itemBox != null && GameManager.instance.itemBox.isBoxOpen && !slot.isSellable)
        {
            itemIcon.sprite = slot.icon;
            itemIcon.color = new Color(0.4f, 0.4f, 0.4f, 0.7f);
        }
        else
        {
            itemIcon.sprite = slot.icon;
            itemIcon.color = new Color(1, 1, 1, 1);

            if (slot.count == 0)
            {
                slot.RemoveItem();
                EmptyItem();
            }
            else
            {
                quantityText.text = slot.count == 1 ? "" : slot.count.ToString();
            }
        }
    }
}

 

판매창을 열었을 경우 어둡게 변하고, 벗어나면 본래의 색으로 돌아옴.

 

판매 창의 해당 아이템 정보를 표시하지 않도록 ItemBox.cs 에서 UpdatePanel 부분을 수정해주었다.

 void UpdatePanel()
{
    if (selectedSlot != null)
    {
        sellingIcon.sprite = selectedSlot.count > 0 && selectedSlot.isSellable ? selectedSlot.icon : null;
        sellingIcon.color = selectedSlot.count > 0 && selectedSlot.isSellable ? new Color(1, 1, 1, 1) : new Color(1, 1, 1, 0);
        priceText.text = itemPrice.ToString();
        countText.text = itemCount.ToString();
    }
}

 

 

아예 선택을 못하게 하고싶은데 그건 아직 못함ㅠ

728x90