ProjectDDD/Assets/_Datas/02.Scripts/Items/Inventory.cs
2025-07-02 16:28:11 +09:00

63 lines
1.9 KiB (Stored with Git LFS)
C#

using System.Collections.Generic;
using UnityEngine;
namespace DDD
{
public class Inventory : MonoBehaviour
{
public RectTransform inventoryRoot;
public ItemUI itemPrefab;
private Dictionary<string, Item> inventory;
private Stack<ItemUI> unusedItemUIs;
private Transform unusedRoot;
private ItemUI selectedItem;
private async void Start()
{
var task = GoogleSheetManager.LoadSo<ItemSo>();
var items = await task;
itemPrefab.transform.SetParent(null);
itemPrefab.gameObject.SetActive(false);
unusedItemUIs = new Stack<ItemUI>();
var obj = new GameObject("UnusedRoot");
obj.SetActive(false);
unusedRoot = obj.transform;
// TODO: 데이터에서 가져오기
inventory = new Dictionary<string, Item>();
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<ItemUI>());
child.SetParent(unusedRoot);
}
foreach (var item in inventory)
{
var usingPool = unusedItemUIs.TryPop(out var itemObject);
if (usingPool == false)
{
itemObject = Instantiate(itemPrefab.gameObject).GetComponent<ItemUI>();
}
itemObject.gameObject.SetActive(true);
itemObject.transform.SetParent(inventoryRoot);
itemObject.SetUpItem(item.Value);
}
}
}
}