Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: Arkanyko en Junio 02, 2017, 10:04:58 AM

Título: Problema con List<>
Publicado por: Arkanyko en Junio 02, 2017, 10:04:58 AM
El problema es el siguiente:
 
Creo una lista de datos con List<Items> como por ejempo Ítem con sus variables, pero cuando a trabes de un script añado nuevos Ítem a la lista con sus valores en sus variables, todos los ítem con sus variables de la lista quedan con los datos de los últimos datos de las variables del ultimo ítem que que he puesto. Los datos los pongo asi:
 

//Creo una variable ítem de tipo Ítem vacia:
public Ítem ítem = new Ítem();
//esta es la lista donde añado la variable ítem vacia:
Ítems.Item.Add (item);
//Luego le asigno los datos a las variables:
Ítems.Item[].Nombre = " Mga";
Ítems.Item[].Damage = 10;
//etc..

 
que pasa, pues que cuando he creado un numero determinado de Ítems en la lista todos los valores de los Ítems de las variables de cada Ítem de la lista tiene los valores de las variables del ultimo Ítem que he puesto en la lista.
 
Alguien sabría decirme por que pasa eso. Un saludo.
Título: Problema con List<>
Publicado por: iRobb en Junio 02, 2017, 10:36:29 AM

-- De entrada quítale esas tildes o puedes tener problemas
//Creo una variable ítem de tipo Ítem vacia:
public Item item = new Item();
item.Nombre = "Mga";
item.Damage = 10;
//esta es la lista donde añado la variable ítem vacia:
Items.Item.Add (item);
//Luego le asigno los datos a las variables:
-----Ítems.Item[].Nombre = " Mga";
-------Ítems.Item[].Damage = 10;
Título: Problema con List<>
Publicado por: pioj en Junio 02, 2017, 10:37:05 AM
Puedes declarar un constructor en la clase que guarde esos nuevos parámetros. Ejemplo:
 

//1. declaro la clase de Item
public class Item {
  //props
  public string Nombre;
  public int Damage;
 
  //el constructor. Asigna a los valores los campos pasados por parametro.
  public Item(string nom, int dam) {
    Nombre = nom;
    Damage = dam;
  }
}
// ##################
//Y ahora, el script como tal...
public class miScript: MonoBehaviour {
  //lista
  public List<Item> Items = new List<Item>();
 
  void Start() {
    Items.Add(new Item("Mga",10);
  }
}

 
Nota: No hagáis copypaste tal cual, que lo he escrito de memoria...
Título: Problema con List<>
Publicado por: Arkanyko en Junio 02, 2017, 02:32:47 PM
Gracias por vuestras respuestas pero ya encontre el problema.
 
Un saludo.