oridar 0 Report post Posted March 7, 2016 (edited) buenas, estoy intentando crear un array con 5 gameobjects dentro que luego utilizo para instancias 1 atreves de un random, algo así: Cita public GameObject[] cubos = new GameObject[5]; // así los creo. GameObject cubo = (GameObject)Instantiate (cubos [Random.Range (0, cubos.length)]); // así los instancio aleatoriamente vale, ahora necesito que esta lista de gameobjects, pueda cambiar sin afectar al aleatorio, me refiero a que por ejemplo tener una variable tipo boleado que active o desactive uno de los objetos y se quite de la lista o vuelva. gracias. voy un poco perdido, agradecería cualquier guía. Edited June 11, 2016 by pioj uso de tags y <> para pegar código. Share this post Link to post Share on other sites
juanma_teso 159 Report post Posted March 7, 2016 No sé qué quieres hacer exactamente, pero las instancias no las tienes en ninguna lista. Si quieres puedes tener dos arrays, una con los cubos que tienes y otra con booleanos, y una lista o array en la que tengas los que sí puedes instanciar, luego tendrías que cambiar los booleanos según tu criterio y volver a hacer la segunda lista o array con los true, si no es lo que buscas explica un poco más. Share this post Link to post Share on other sites
oridar 0 Report post Posted March 8, 2016 No sé qué quieres hacer exactamente, pero las instancias no las tienes en ninguna lista. Si quieres puedes tener dos arrays, una con los cubos que tienes y otra con booleanos, y una lista o array en la que tengas los que sí puedes instanciar, luego tendrías que cambiar los booleanos según tu criterio y volver a hacer la segunda lista o array con los true, si no es lo que buscas explica un poco más.buenas, me podrias esplicar un poco eso de las dos listas, con algún ejemplo?yo lo que quiero hacer es una array vacía que pueda meter i sacar gameobjects o vaciar la lista.pero que no me pida posición de array simplemente vaya metiendo objetos en el siguiente espacio libre graciasme puedes Share this post Link to post Share on other sites
juanma_teso 159 Report post Posted March 8, 2016 Entonces necesitas una lista, que es parecido al array pero dinámico, se puede añadir y quitar objetos al gusto, las listas suelen tener un tipo, GameObject o Transform o otro tipo.public GameObject[] cubos = new GameObject[5]; List<GameObject> listaCubos = new List<GameObject>(); GameObject nuevo; void Start() { //Instancias un nuevo objeto nuevo = Instantiate(cubos[random...]...); //Lo añades a la lista sin importar cuantos haya listaCubos.Add (nuevo); //Modificar elemento enésimo de la lista listaCubos [n].setActive (false); //Elementos de la lista Debug.Log(listaCubo.Count); //Elimina el elemento enésimo de la lista listaCubos.Remove (n); Debug.Log(listaCubo.Count);//Un número menos que antes. }Sigo sin saber qué intentas lograr, espero que te sirva.PD: te vuelvo a dejar el link para que lo mires.https://msdn.microsoft.com/es-es/library/6sh2ey19(v=vs.110).aspx Share this post Link to post Share on other sites
oridar 0 Report post Posted March 8, 2016 (edited) Entonces necesitas una lista, que es parecido al array pero dinámico, se puede añadir y quitar objetos al gusto, las listas suelen tener un tipo, GameObject o Transform o otro tipo.public GameObject[] cubos = new GameObject[5]; List<GameObject> listaCubos = new List<GameObject>(); GameObject nuevo; void Start() { //Instancias un nuevo objeto nuevo = Instantiate(cubos[random...]...); //Lo añades a la lista sin importar cuantos haya listaCubos.Add (nuevo); //Modificar elemento enésimo de la lista listaCubos [n].setActive (false); //Elementos de la lista Debug.Log(listaCubo.Count); //Elimina el elemento enésimo de la lista listaCubos.Remove (n); Debug.Log(listaCubo.Count);//Un número menos que antes. }Sigo sin saber qué intentas lograr, espero que te sirva.PD: te vuelvo a dejar el link para que lo mires.https://msdn.microsoft.com/es-es/library/6sh2ey19(v=vs.110).aspxgracias. he estado mirándolo pero no me sale,siento no haberme expresado bien. Por si acaso lo repetiré intentando explicarlo mejorTengo 6 gameobjects creados:public gameobject cuboRojo;public gameobject cuboAmarillo;etc... Hasta 6. quiero hacer un arraylist que pueda ir poniendo y quitando los game objects ja creados arriba.public ArrayList listaCubos = new ArrayList();luego añado los gameobjects:listaCubos.Add (cuboRojo);listaCubos.Add(cuboAmarillo);y por ultimo instanciando aleatoriamente dependiendo de los que hay dentro del array .cubo = Instantiate(listaCubos[random.range(0, listaCubosLength)]);pero no me funciona, me da un error de The tape object cannot be used as tope parapete T etc..creo que tu explicación va por ahí, pero no me sale bienMuchas gracias Edited March 8, 2016 by oridar Share this post Link to post Share on other sites
oridar 0 Report post Posted March 8, 2016 Entonces necesitas una lista, que es parecido al array pero dinámico, se puede añadir y quitar objetos al gusto, las listas suelen tener un tipo, GameObject o Transform o otro tipo.public GameObject[] cubos = new GameObject[5]; List<GameObject> listaCubos = new List<GameObject>(); GameObject nuevo; void Start() { //Instancias un nuevo objeto nuevo = Instantiate(cubos[random...]...); //Lo añades a la lista sin importar cuantos haya listaCubos.Add (nuevo); //Modificar elemento enésimo de la lista listaCubos [n].setActive (false); //Elementos de la lista Debug.Log(listaCubo.Count); //Elimina el elemento enésimo de la lista listaCubos.Remove (n); Debug.Log(listaCubo.Count);//Un número menos que antes. }Sigo sin saber qué intentas lograr, espero que te sirva.PD: te vuelvo a dejar el link para que lo mires.https://msdn.microsoft.com/es-es/library/6sh2ey19(v=vs.110).aspxhe reeditado mi respuesta Share this post Link to post Share on other sites
iRobb 638 Report post Posted March 8, 2016 El ArrayList se utlizaba hace un tiempo. Utiliza mejor la List como te comentan. Otro tema es que no sepas los que es <T> y lo del error "tope parapete". Entonces ya, necesitas saber teoría sobre C# templates. Share this post Link to post Share on other sites
oridar 0 Report post Posted March 8, 2016 El ArrayList se utlizaba hace un tiempo. Utiliza mejor la List como te comentan. Otro tema es que no sepas los que es <T> y lo del error "tope parapete". Entonces ya, necesitas saber teoría sobre C# templates.gracias, pero si supiera como funciona todo lo de c# ya no estaría haciendo la pregunta, no me ayudas mucho,y ya estoy intentando hacer el list pero me peta. gracias de todos modos experto. Share this post Link to post Share on other sites
iRobb 638 Report post Posted March 8, 2016 El problema es que preguntas algo sin tener prácticamente base teórica, y entonces todo lo que te responden no lo entiendes. No saber lo que es un List o <T> es tan básico como sumar.Deberías rebobinar y empezar por entender las bases de programación con C# sino te pararás a cada paso. Share this post Link to post Share on other sites
Arthure 198 Report post Posted March 8, 2016 yo paso ya de decirle a la gente que aprenda primero programacion, siempre saltan con la misma respuesta : "vas de pro", "no me interesa aprender, solo saber lo que pregunto", "no me ayudas", "para eso mejor no haber dicho nada" ... y un largo etc. Cuando se es tan ignorante (no es una ofensa, solo una observacion) para saber que les estas dando el mejor consejo posible.gracias, pero si supiera como funciona todo lo de c# ya no estaría haciendo la pregunta, no me ayudas mucho,y ya estoy intentando hacer el list pero me peta. gracias de todos modos experto.No se trata de saber todo lo de c#, pero precisamente lo que no sabes hacer en este caso es tan basico ... que lo mejor que puedes hacer es aprender programacion primero, y si no quieres aprender por lo menos no ofenderse cuando te digan. Cosas como clases genericas es de lo mas tirado y se utiliza un monton de una forma u otra. Share this post Link to post Share on other sites
juanma_teso 159 Report post Posted March 8, 2016 Aunque coincido en que es mejor aprender a programar antes, si sabes un poco es cuestión de ir ampliando, un tipo de dato es int, string, float... GameObject, Transform, miClase... no sé darte una definición porque el nombre es la definición en sí. Para crear una lista, que tiene varias ventajas sobre el arraylist es necesario especificar un tipo entre <Tipo>, en tu caso GameObject, como te lo puse en el ejemplo, si intentas agregar 'lista.Add()' otro tipo de dato como Transform, int, string, etc... te dará error. Por último comentar que para poder usar listas, debes usar el namespace 'System.Collection.Generic', esto es un contenedor de clases, normalmente se importan dos por defecto, 'System.Collection' y el otro de Unity que ahora no recuerdo. Share this post Link to post Share on other sites
oridar 0 Report post Posted March 8, 2016 Aunque coincido en que es mejor aprender a programar antes, si sabes un poco es cuestión de ir ampliando, un tipo de dato es int, string, float... GameObject, Transform, miClase... no sé darte una definición porque el nombre es la definición en sí. Para crear una lista, que tiene varias ventajas sobre el arraylist es necesario especificar un tipo entre <Tipo>, en tu caso GameObject, como te lo puse en el ejemplo, si intentas agregar 'lista.Add()' otro tipo de dato como Transform, int, string, etc... te dará error. Por último comentar que para poder usar listas, debes usar el namespace 'System.Collection.Generic', esto es un contenedor de clases, normalmente se importan dos por defecto, 'System.Collection' y el otro de Unity que ahora no recuerdo.gracias juanma, ya especifico en la lista el tipo y tengo el system.collection.generic asignado. pero me da error igual.estoy buscando en todas las guias tanto de unity como microsoft referencias pero no encuentro el porque del error.vengo de programar en x-code, estoy aprendiendo ahora c#, si que me interesa aprender aunque por arriba digan que la gente tira aquí el código y espera respuesta, antes de subir el post estuve buscando, pero la verdad que las referencias tanto de unity como de microsoft son muy escuetas.gracias por tu ayuda, seguiré investigando, cualquier cosa lo comento por aquí. Share this post Link to post Share on other sites
GSG3D 150 Report post Posted March 9, 2016 Como lo estas haciendo? Share this post Link to post Share on other sites
juanma_teso 159 Report post Posted March 9, 2016 Entiendo que sabes entonces, pon el código y lo que quieres conseguir explícitamente, no tengas reparo en mostrar el código que no he visto al primero del foro que copie una idea Share this post Link to post Share on other sites