VideoJuegos
Unirme al grupo
Reportar abuso
Estoy intentando crear un sistema de inventario, deberia funcionar pero no funciona, duplica objetos cuando deberia sumarlos, basicamente no esta detectando que la ID del objeto que ya existe es igual a la del objeto que el jugador recoge a pesar de que esta la comprobacion enorme que se segura de que la ID exista dentro del inventario aqui un video de que hace: [video]https://www.youtube.com/watch?v=Z_Z58pDRohE[/video] el error debe estar en la comprobacion supongo pero todo parece estar bien: public class Inventory : MonoBehaviour { public List inventoryItems = new List(); public Transform itemsParent; public GameObject InventoryItemPrefab; public void AddItem(Item item, int quantity) { Debug.Log($"Adding item with ID: {item.ID} and quantity: {quantity}"); foreach (var invItem in inventoryItems) { Debug.Log($"InventoryItem ID: {invItem.item.ID}, Quantity: {invItem.Quantity}"); } InventoryItem existingInventoryItem = inventoryItems.Find(i => i.item.ID == item.ID); < aqui comprueba que el objeto nuevo tenga la ID del objeto del inventario if (existingInventoryItem != null) { Debug.Log($"Item found. Current quantity: {existingInventoryItem.Quantity}"); existingInventoryItem.UpdateQuantity(existingInventoryItem.Quantity + quantity); } else { Debug.Log("Item not found. Adding new item."); GameObject newItemObject = Instantiate(InventoryItemPrefab, itemsParent); newItemObject.transform.SetSiblingIndex(0); InventoryItem newInventoryItem = newItemObject.GetComponent(); newInventoryItem.SetItem(item, quantity); inventoryItems.Add(newInventoryItem); } UpdateInventoryUI(); } private void UpdateInventoryUI() { foreach (Transform child in itemsParent) { Destroy(child.gameObject); } foreach (InventoryItem inventoryItem in inventoryItems) { GameObject itemObject = Instantiate(InventoryItemPrefab, itemsParent); InventoryItem inventoryItemComponent = itemObject.GetComponent(); inventoryItemComponent.SetItem(inventoryItem.item, inventoryItem.Quantity); } } } este es el objeto en si, su unico proposito en ID es contener una identificacion que es un integrer para comprobar si ya se encuentra en el inventario o no: [CreateAssetMenu(fileName = "New Item", menuName = "InventoryItem")] public class Item : ScriptableObject { public string ItemName; public int ID;