Jump to content
Midgard

Almacenar argumentos en array

Recommended Posts

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[i].transform.GetChild(uno de los 4 hijos).GetComponent<Text>().text = array_objeto_class[i].ARGUMENTO ; //<<---¿como puedo acceder a los argumentos de manera ciclica?, ya que no puedo poner "ARGUMENTO[i]" 
    
    };

 

Gracias por todo.

Edited by Midgard

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

¿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...

Share this post


Link to post
Share on other sites

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;
    }
}

 

Share this post


Link to post
Share on other sites

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...