Hola a todos! Les cuento que estoy teniendo un problema con una script de inventario que estoy utilizando de este video:
tart=1723&feature=oembed" width="480">
Para que no tengan que ver todo el video les voy a indicar las partes puntuales. Verán mi problema es que en la función "AgregarAlgoAlInventario"(38:05) si bien se crea un "item" y si agrego otro de igual id se suman sus cantidades, solo pasa con el primer objeto de la lista(la lista de ObjetoInvId) ya que si agrego otro item con distinto id se crea un nuevo "slot",osea se adiciona un nuevo objeto en la lista(hasta ahí todo bien), pero al agregar otro item igual(mismo id que el segundo item) al segundo item se le suma la cantidad correcta, pero además se me crea otro slot y así sucesivamente. Ya que quizas lo explique medio para el tuje les dejo un gif:
El element 0 es el priemer item al cual al seguir agregandolo aumenta su cantidad y no se duplica. Ya los otros elementos como pueden ver tienen el mismi id pero se agregan en slots separados(aunque un detalle es que el Element 1 va aumentando su canidad en base a los nuevos duplicados de este)
Bueno ese es en sí el error les dejo toda la script por si las dudas, aunquecreo que el error debe estar en la función que nombre arriba(pareciera que no respeta el return : p):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class Inventario : MonoBehaviour {
[System.Serializable]
public struct ObjetoInvId
{
public int id;
public int cantidad;
public ObjetoInvId(int id, int cantidad)
{
this.id = id;
this.cantidad = cantidad;
}
}
[SerializeField]
Database data;
[Header("Variables del Drag and Drop")]
public GraphicRaycaster graphRay;
private PointerEventData pointerData;
private List<RaycastResult> raycastResults;
public Transform canvas;
public GameObject objetoSeleccionado;
public Transform ExParent;
[Header("Prefs y items")]
public Transform Contenido;
public Item item;
public List<ObjetoInvId> inventarioo = new List<ObjetoInvId>();
void Start () {
ActualizarInventario();
pointerData = new PointerEventData(null);
raycastResults = new List<RaycastResult>();
}
void Update () {
Arrastrar();
if (Input.GetKeyDown(KeyCode.F))
{
AgrregarItem(