Inventory_UIcontrol.cs 2.08 KB
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
// 인벤토리 UI 업데이트. 
// UI관련 버튼 함수도 포함 (오픈인벤토리, 클로즈인벤토리, 모두받기 버튼)
public class Inventory_UIcontrol : MonoBehaviour
{

    public GameObject inventoryUI;  // 전체 UI
    Inventory_control inventory;    //현재 인벤토리
    private List<GameObject> slots;

    void Start()
    {
        slots = new List<GameObject>();

        inventory = Inventory_control.instance; //싱글톤 인벤토리 인스턴스화
        inventory.onItemChangedCallback += UpdateUI;

    }


    public void OnButton_OpenInventory()
    {
        Debug.Log("선물함 열림!");
        inventoryUI.SetActive(true);
    }

    public void OnButton_CloseInventory()
    {
        Debug.Log("선물함 닫힘!");
        inventoryUI.SetActive(false);
    }


    public void OnButton_RemoveALLItem()
    {
        inventory.RemoveALLItem();
    }

    public void UpdateUI()
    {
     
            if (slots.Count > 0) //기존 슬롯들 다 삭제
            {
                foreach (GameObject slot in slots)
                    Destroy(slot.gameObject);

                slots.Clear();
            }

            //임시 인벤토리에 들어있는것 대로 슬롯 다시생성
            Debug.Log("선물함 아이템 갯수 : " + inventory.items.Count);
            for (int i = 0; i < inventory.items.Count; i++)
            {
                //Item_slot 복제. 
                GameObject oneslot = Instantiate(inventory.slot_template) as GameObject;
                oneslot.SetActive(true);

                //객체의 스크립트 가져와서 함수실행
                oneslot.GetComponent<Inventory_slot>().AddItemtoSlot(inventory.items[i]);

                //새로 생성된 버튼의 부모 재설정해줌. false는 위치 그대로 유지시켜줌
                oneslot.transform.SetParent(inventory.slot_template.transform.parent, false);

                //관리하기위해 slots List에 넣어줌
                slots.Add(oneslot);

            }
    }


}