Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

¿Cómo puedo acceder a array de tipo List<> desde otro script?

Iniciado por ftejada, Junio 14, 2015, 11:56:04 PM

Tema anterior - Siguiente tema
Junio 14, 2015, 11:56:04 PM Ultima modificación: Junio 14, 2015, 11:58:23 PM por ftejada
Hola a todos, necesito acceder a un array de tipo List<GameObject> desde otro script para poder obtener datos (posiciones, etc,) de cada gameObject que contenga ese array List.
 
El tema es que he probado varias cosas, pero no logro acceder a esos GameObject que están almacenados en el Array de tipo List<> que está en otro script
 
Script_A

public static List<GameObject> ArrayList = new List<GameObject>();
public GameObject[] cars;
 
//En la función Start relleno el array con los GameObject
void Start{
   
   //Se rellena el array con los objetos "CARS" que haya
   cars = GameObject.FindGameObjectsWithTag ("Cars");
   //Y con esto Rellenamos la lista de todos los GameObjects que contiene el array cars
   for (int i = 0; i < cars.Length; i++)
   {
       AddGameObjectToArray(cars);         
   }
}
.......
.......
public void AddGameObjectToArray(GameObject objeto)
{
     ArrayList.Add (objeto);      
}

Y necesito poder acceder a esos GameObject que estan dentro de ArrayList (de tipo List), desde otro script.
 
Como ya he dicho he probado varias cosas pero no lo consigo....
 
Podriais darme algun consejo de como abordarlo o algun tutorial de como hacerlo. Pero no el de Unity ya que el de Unity utiliza  GameObject[], pero yo necesito poder incluir o quitar GameObject de las List ArrayList en tiempo de ejecucion.
 
La version de Unity que utilizo es la más reciente...
 
Espero vuestra respuesta, saludos y gracias de antemano.

Pero por que no simplemente utilizas un Arreglo simple GameObject[] o una Lista, pero no entiendo que intentas hacer!
 
Si es dinamico, simplemente con List<T> ya puedes agregar y eliminar, tu problema es que ArrayList  es un nombre reservado y cuando intentas acceder por herencia accede a ArrayList class, y no a tu Lista!

Junio 15, 2015, 01:51:46 AM #2 Ultima modificación: Junio 15, 2015, 03:09:00 AM por ftejada
Cita de: francoe1 date=1434323591Pero por que no simplemente utilizas un Arreglo simple GameObject[] o una Lista, pero no entiendo que intentas hacer!
 
Si es dinamico, simplemente con List<T> ya puedes agregar y eliminar, tu problema es que ArrayList  es un nombre reservado y cuando intentas acceder por herencia accede a ArrayList class, y no a tu Lista!
No utilizo simplemente GameObject[] por que necesito que sea dinamico.
 
Osea que el problema era simplemente que ArrayList es un nombre reservado??? Voy a probar con otro nombre a ver si si me deja acceder a los gameObjects... Me pegao unas cuantas horas y era esa chorradita... jajajaja!!!!
 
Cuando lo pruebe lo comento. Saludos y gracias por la ayuda.
 
EDITO:
Era ese el problema. Muchas gracias por todo.

@francoe1, parece que lo está haciendo para darle la lista de elementos ya desde el Editor, en lugar de programarla... Se puede ahorrar una de las dos, si quiere...
 
 
Coincido con él, vigila los nombres y no lo llames algo tan genérico como "ArrayList", busca un nombre algo más oportuno...
 
 
 
Otra cosa. Si quieres acceder a una lista o unos datos entre scripts que tienen un orden de ejecución concreto, te aconsejo que modifiques el ExecutionOrder. Es una opción para forzar e indicar el orden en el que se deben procesar los scripts. Está dentro del Project Settings, en el Editor.

Etiquetas: