Unity: 제작UI 구현 및 버튼 연결

이재형·2024년 6월 3일
0
post-thumbnail
post-custom-banner

Unity 공부

배운 내용

1. 제작UI 구현 및 버튼 연결

사진:

[Serializable]
public class ResourceData
{
    public string ResourceName;
    public int value;
}

public class Produce : MonoBehaviour
{
    // 제작 시 얻을 아이템 데이터
    public ItemData data;
    public List<ResourceData> resourceData;
    
    // 인벤토리 정보
    UIInventory inventory;

// 제작 가능한지 확인
public void CheckProduce()
{
    inventory = GameManager.Instance.Player.inventory;
    bool Check = true;

    for (int i = 0; i < resourceData.Count; i++)
    {
        // 가지고 있지 않다면
        if (!inventory.CheckItem(resourceData[i].ResourceName, resourceData[i].value))
        {
            // 제작 불가능
            Check = false;
        }
    }

    // 아이템
    if (!Check) return;

    // 제작에 필요한 아이템을 소모
    for (int i = 0; i < resourceData.Count; i++)
    {
        // 아이템 소모하고 아이템 획득
        inventory.RemoveItem(resourceData[i].ResourceName, resourceData[i].value);
    }

    // 아이템 획득
    ProduceItem();
}



// 제작 성공 시 인벤토리에 아이템 넣기
public void ProduceItem()
{
    // 아이템을 플레이어의 인벤토리에 추가
    GameManager.Instance.Player.currentData = data;
    GameManager.Instance.Player.AddItem?.Invoke();
}

// UIInventory
public bool CheckItem(string name, int value)
{
    for (int i = 0; i < slots.Length; i++)
    {
        if (slots[i].data == null)
        {
            continue;
        }

        // 아이템이 있다면
        if (slots[i].data.itemName == name)
        {
            // 제작 가능한 아이템보다 개수가 많다면
            if (slots[i].slotQuantity >= value)
            {
                return true;
            }
        }
    }
    return false;
}

public void RemoveItem(string name, int value)
{
    for (int i = 0; i < slots.Length; i++)
    {
        if (slots[i].data == null)
        {
            continue;
        }

        // 아이템과 같은 이름 검색
        if (slots[i].data.itemName == name)
        {
            slots[i].slotQuantity -= value;
            break;
        }
    }
    
}

설명: 제작UI마다 재료 정보를 추가하고 CheckProduce()메서드를 실행하여 플레이어의 인벤토리에 접근하여 제작 재료가 있는지 확인하고 재료가 있다면 개수를 판단하여 문제가 없으면 재료를 소모하여 아이템을 획득한다.


정리

배운 내용

1. 없음

해결 못한 문제

1. 없음

문제점

1. 없음

profile
한국사람
post-custom-banner

0개의 댓글