Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: Midgard en Septiembre 28, 2015, 09:53:59 PM

Título: Almacenar argumentos en array
Publicado por: Midgard en Septiembre 28, 2015, 09:53:59 PM
Hola chicos.¿Hay alguna manera de almacenar los argumentos de una clase dentro de un array, para poder cargarlos despues mediante un bucle de manera sistematizada? En mi ejemplo son sólo 4 argumentos pero podrían ser 40.Tengo una clase de objeto,  "objeto_class"  para mi inventario de mi juego. Esta clase contiene los argumentos y el construcctor necesario para generar cualquier objeto.Como veis, tengo 4 argumentos  en mi clase "objeto_class"
   public class objeto_class{      
   public int id;  //1º  argumento
   public string nombre;//2º argumento
   public string descripcion;//3º argumento
   public int cantidad;//4º argumento
   
   public objeto_class(int idd,string nom,string desc,int cant){         
            id = idd;
      nombre = nom;
      descripcion = desc;
      cantidad = cant;         
   }      
}
Los "objetos_class" los tengo almacenados dentro de una array de objeto_class llamada "array_objeto_class". Las casillas de mi inventario estan creadas con un prefab con un  UI objeto que contiene 4 hijos, el cual lo instancio con un "for" 16 veces, dándome 16 casillas.
casilla_prefab-------tiene 4 hijos donde quiero que carguen los argumentos> 1º hijo   TEXTO       ID del objeto  (esto cargaría el valor del argumento int id)>2º hijo    TEXTO       Nombre del objeto (esto cargaría el valor del argumento string nombre )>3º hijo    TEXTO       Descripcion del objeto (esto cargaría el valor del argumento string descripcion)>4º  hijo    TEXTO       Cantidad del objeto (esto cargaría el valor del argumento cantidad )Su tag es "casilla_estadisticas"Las casillas las busco con sus TAGs y las meto dentro de un array de GameObject.
GameObject[] array_cas = GameObject.FindGameObjectsWithTag("casilla_estadisticas");// Busco todas las casillas con el mismo tag, y las   meto en un array de GameObject

for(int i = 0; i < array_cas.Length; i++){  //con este for quiero poner valor a los hijos de las casillas que leen esos valores de los argumentos de las clases objeto_class almacenadas en array_object_class
    array_cas.transform.GetChild(uno de los 4 hijos).GetComponent<Text>().text = array_objeto_class.ARGUMENTO ; //<<---¿como puedo acceder a los argumentos de manera ciclica?, ya que no puedo poner "ARGUMENTO"
   
    };
 Gracias por todo.
Título: Almacenar argumentos en array
Publicado por: juanma_teso en Septiembre 28, 2015, 11:04:15 PM
Pues yo creo que con otro bucle dentro del bucle 
Título: Almacenar argumentos en array
Publicado por: iRobb en Septiembre 28, 2015, 11:22:15 PM
Te creas una clase para los argumentos y pasas la referencia de la clase. Si quieres copia, pues un copy constructor, o sea copiar los valores de la clase a los campos internos.
Título: Almacenar argumentos en array
Publicado por: Midgard en Septiembre 29, 2015, 12:28:34 AM
Cita de: iRobb date=1443475335" data-ipsquote="" data-cite="iRobb" class="ipsQuoteTe creas una clase para los argumentos y pasas la referencia de la clase. Si quieres copia, pues un copy constructor, o sea copiar los valores de la clase a los campos internos.
¿Me puedes poner un ejemplo sobre lo que acabas de exponer iRobb ?, no hace falta que sea con mi código...empecé C# de manera autodidacta y hay cosas que pueden ser de parbulario y no se hacer...
Título: Almacenar argumentos en array
Publicado por: iRobb en Septiembre 29, 2015, 01:04:47 AM
De memoria:
public class cParameters {
    string id1;
    int i2;
    bool bPasa;
}

public class c {
    private cParameters parameters;
   
    public c(cParameters p) {
        this.parameters.id1 = p.id1;
        this.parameters.i2 = p.i2;
        this.parameters.bPasa = p.bPasa;
    }
}
 
Título: Almacenar argumentos en array
Publicado por: Midgard en Septiembre 29, 2015, 07:55:34 PM
Gracias iRobb, me fue muy útil.