Menu
CoddyTech

Deshacer el más reciente

Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 66 de 85.

El elemento más reciente de una lista es el último, en el índice Count - 1. Quítalo con Remove y comprueba primero que Count > 0: en una lista vacía no hay ningún último elemento, y leer uno detiene el script con una ArgumentOutOfRangeException.

if (coins.Count > 0)
{
    GameObject last = coins[coins.Count - 1];
    coins.Remove(last);
    Destroy(last);
}

Quitar un elemento de la lista no afecta al objeto de la escena: ocúltalo o destrúyelo tú.

challenge icon

Desafío

Intermedio

Haz que la barra espaciadora retire la caja más reciente.

  1. En Update(), cuando se pulse Input.GetKeyDown(KeyCode.Space) y solo si boxes.Count > 0, obtén GameObject newest = boxes[boxes.Count - 1];.
  2. Ocúltala con newest.SetActive(false); y quítala con boxes.Remove(newest);.
  3. Registra "Boxes: " + boxes.Count.

Pulsa «Jugar», haz clic tres veces y después pulsa la barra espaciadora: la última caja desaparece. Después, pulsa «Comprobar».

Pruébalo tú mismo

using System.Collections.Generic;
using UnityEngine;

public class BoxStacker : MonoBehaviour
{
    public GameObject boxPrefab;
    List<GameObject> boxes = new List<GameObject>();

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Vector3 spot = transform.position + new Vector3(boxes.Count * 1.5f, 0, 0);
            GameObject box = Instantiate(boxPrefab, spot, Quaternion.identity);
            boxes.Add(box);
            Debug.Log("Boxes: " + boxes.Count);
        }

        // Space: oculta la caja más reciente y elimínala de la lista
    }
}

Todas las lecciones de Fundamentos de scripting en Unity

Practica por tu cuenta: Playground de Unity