using System.Collections.Generic; using UnityEngine; namespace DDD { public class Inventory : MonoBehaviour { public RectTransform inventoryRoot; public ItemUI itemPrefab; private Dictionary inventory; private Stack unusedItemUIs; private Transform unusedRoot; private ItemUI selectedItem; private async void Start() { var task = GoogleSheetManager.LoadSo(); var items = await task; itemPrefab.transform.SetParent(null); itemPrefab.gameObject.SetActive(false); unusedItemUIs = new Stack(); var obj = new GameObject("UnusedRoot"); obj.SetActive(false); unusedRoot = obj.transform; // TODO: 데이터에서 가져오기 inventory = new Dictionary(); inventory["0"] = items.ItemList[0]; inventory["1"] = items.ItemList[1]; inventory["2"] = items.ItemList[2]; UpdateItemList(); } public void UpdateItemList() { var counts = inventoryRoot.childCount; for (int i = 0; i < counts; ++i) { var child = inventoryRoot.GetChild(0); unusedItemUIs.Push(child.GetComponent()); child.SetParent(unusedRoot); } foreach (var item in inventory) { var usingPool = unusedItemUIs.TryPop(out var itemObject); if (usingPool == false) { itemObject = Instantiate(itemPrefab.gameObject).GetComponent(); } itemObject.gameObject.SetActive(true); itemObject.transform.SetParent(inventoryRoot); itemObject.SetUpItem(item.Value); } } } }