using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class InventoryManager : MonoBehaviour { static InventoryManager instance; // !! public Inventory myBag; public GameObject slotGrid; // public Slot slotPrefab; public GameObject emptySlot; public Text itemInfomation; public int slotIndex; public GameObject bagImage; public GameObject SceneChange; // public Character maincharacter; public List slots = new List(); GameManager gameManager; GameObject[] pieces; Character maincharacter; Character selected; void Awake() { if (instance != null) Destroy(this); instance = this; gameManager = GameObject.Find("GameManager").GetComponent(); pieces = GameObject.FindGameObjectsWithTag("Pieces"); foreach (var piece in pieces) { if(piece.GetComponent().id == 0) { instance.maincharacter = piece.GetComponent(); break; } } instance.selected = gameManager.GetSelected(); } void Update() { instance.selected = gameManager.GetSelected(); } private void OnEnable() { RefreshItem(); instance.itemInfomation.text = "这里是物品描述。"; } public static void UpdateItemInfo(string itemDescription) { instance.itemInfomation.text = itemDescription; } public static void UpdateItemIndex(int index) { instance.slotIndex = index; } public static void RefreshItem() { // 循环删除slotGrid下的子集物品 for (int i = 0; i < instance.slotGrid.transform.childCount; i++) { if(instance.slotGrid.transform.childCount == 0) break; Destroy(instance.slotGrid.transform.GetChild(i).gameObject); instance.slots.Clear(); // 清空slots列表 } // 重新生成对应背包中物品的slot for (int i = 0; i < instance.myBag.itemList.Count; i++) { instance.slots.Add(Instantiate(instance.emptySlot)); instance.slots[i].transform.SetParent(instance.slotGrid.transform); instance.slots[i].GetComponent().slotIndex = i; instance.slots[i].GetComponent().SetupSlot(instance.myBag.itemList[i]); } } public static void UseItem() { // Debug.Log(instance.myBag.itemList[instance.slotIndex].itemName); if(instance.myBag.itemList[instance.slotIndex].usable) { if(instance.myBag.itemList[instance.slotIndex].itemName == "Crystal") { if(instance.gameManager.GetExploreMode()) { instance.SceneChange.SetActive(true); instance.bagImage.SetActive(false); } } if(instance.myBag.itemList[instance.slotIndex].itemName == "Health") { instance.selected.ChangeHealth(5); if(instance.myBag.itemList[instance.slotIndex].itemHeld <= 1) { instance.myBag.itemList[instance.slotIndex] = null; } else { instance.myBag.itemList[instance.slotIndex].itemHeld--; } RefreshItem(); } if(instance.myBag.itemList[instance.slotIndex].itemName == "Mana") { instance.selected.ChangeMana(3); if(instance.myBag.itemList[instance.slotIndex].itemHeld <= 1) { instance.myBag.itemList[instance.slotIndex] = null; } else { instance.myBag.itemList[instance.slotIndex].itemHeld--; } RefreshItem(); } } } }