using System.Collections.Generic; using UnityEngine; public class ItemDatabase : MonoBehaviour { public static ItemDatabase Instance { get; private set; } [SerializeField] private List items = new List(); private Dictionary itemDictionary = new Dictionary(); private Dictionary itemIdDictionary = new Dictionary(); private void Awake() { if (Instance == null) { Instance = this; InitializeItemDictionary(); } else { Destroy(gameObject); } } private void InitializeItemDictionary() { itemDictionary.Clear(); itemIdDictionary.Clear(); foreach (Item item in items) { if (!itemDictionary.ContainsKey(item.itemName)) { itemDictionary.Add(item.itemName, item); } else { Debug.LogError($"Duplicate item name found in ItemDatabase: {item.itemName}"); } if (!itemIdDictionary.ContainsKey(item.itemId)) { itemIdDictionary.Add(item.itemId, item); } else { Debug.LogError($"Duplicate item ID found in ItemDatabase: {item.itemId}"); } } } public Item GetItem(string itemName) { if (itemDictionary.TryGetValue(itemName, out Item item)) { return item; } Debug.LogWarning($"Item not found in database: {itemName}"); return null; } public Item GetItem(int itemId) { if (itemIdDictionary.TryGetValue(itemId, out Item item)) { return item; } Debug.LogWarning($"Item not found in database: ID {itemId}"); return null; } }