Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: ramunda en Junio 10, 2017, 12:57:23 PM

Título: Borrar/desactivar objeto de lista(Resuelto)
Publicado por: ramunda en Junio 10, 2017, 12:57:23 PM
Buenos dias.
 
Tengo una simple lista de objetos(flechas),el cual cuando aprieto la barra espaciadora va quitando uno a uno las flechas de la lista.
 
Esto va perfecto.Pero mi intención es que también me los quite visualmente osea desde el juego con un disable/delete lo que sea.
 
Pero no veo la manera.
 
Agradecería una ayuda.
 
Gracias
 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class quitaflechas : MonoBehaviour
{
public List<GameObject> enemies;
void Awake()
{
   enemies = new List<GameObject>();
   foreach(GameObject enemy in GameObject.FindGameObjectsWithTag("flecha"))
   {
      enemies.Add (enemy);    
   }
}
void Update()
{
   if(enemies.Count > )
   {
      if(Input.GetKeyDown (KeyCode.Space))
      {
         enemies.RemoveAt();
         print (enemies.Count);
      }
   }
}
}

 
 
 
 
Título: Borrar/desactivar objeto de lista(Resuelto)
Publicado por: lightbug en Junio 10, 2017, 01:59:42 PM
Hola, vos estas trabajando (segun el codigo) sobre el primer elemento todo el tiempo, entonces antes de eliminarlo de la lista (para no cambiar los ordenes de los demas) podes hacerlo no visible y luego quitarlo de la lista
 

if(Input.GetKeyDown (KeyCode.Space))   //esto va a pasar menos, tiene mas prioridad
{
  if(enemies.Count > )
  {
    enemies[].blabla //aca le haces lo que quieras
    enemies.RemoveAt();
    print (enemies.Count);
  }
 
}

 
saludos
 
edit: Los "cero" se fueron de vacaciones, dentro del [] y en el removeAt hay uno
Título: Borrar/desactivar objeto de lista(Resuelto)
Publicado por: ramunda en Junio 10, 2017, 02:21:18 PM
Muchisimas gracias #lighbug , va de lujo asi queda el script final para futuras referemcias :)
 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class quitaflechas : MonoBehaviour
{
public List<GameObject> enemies;
void Awake()
{
   enemies = new List<GameObject>();
   foreach(GameObject enemy in GameObject.FindGameObjectsWithTag("flecha"))
   {
      enemies.Add(enemy);    
   }
}
void Update()
{
 
      if (Input.GetButtonDown ("Fire1"))
       {
      if(enemies.Count > )
      {
         enemies [].SetActive(false); //aca le haces lo que quieras
         enemies.RemoveAt();
      }
      }

 
Gracias!!