Español (ES)
Usuario anónimo
Iniciar sesión | Regístrate gratis
Unity 3D game creators
Grupo / Formado por 88 miembros
Temática:

VideoJuegos

Unity 3D game creators
El mejor engine para crear videojuegos, Unity 3D

Unirme al grupo

Reportar abuso

Foro del grupo

Responder / Comentar
Foro Unity 3D game creators
Por BRAYIYAN24
Hace 1 mes / Respuestas: 0 / Lecturas: 3

Ayuda, el sistema de Inventario esta dandome dolores de cabeza

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;
Responder / Comentar
Subir
Grupo > Unity 3D game creators > Ayuda, el sistema de Inventario esta dandome dolores de cabeza

  • Regístrate

  • Información legal
Juegos© Foro 3DJuegos 2005-2024. . SOBRE FORO 3DJUEGOS | INFORMACIÓN LEGAL