Menu
CoddyTech

Eliminare il più recente

Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 66 di 85.

L'elemento più recente di un elenco è il suo ultimo elemento, all'indice Count - 1. Rimuovilo con Remove e verifica prima Count > 0: in un elenco vuoto non c'è un ultimo elemento e leggerne uno interrompe lo script con un'ArgumentOutOfRangeException.

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

Rimuovere un elemento dall'elenco non modifica l'oggetto nella scena: nascondilo o distruggilo tu.

challenge icon

Sfida

Medio

Fai in modo che la barra spaziatrice rimuova la scatola più recente.

  1. In Update(), quando viene premuto Input.GetKeyDown(KeyCode.Space) e solo se boxes.Count > 0, recupera GameObject newest = boxes[boxes.Count - 1];.
  2. Nascondila con newest.SetActive(false); e rimuovila con boxes.Remove(newest);.
  3. Registra "Boxes: " + boxes.Count.

Premi «Gioca», fai clic tre volte, poi premi la barra spaziatrice: l’ultima scatola scompare. Poi premi «Verifica».

Provalo tu

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: nascondi il box più recente e rimuovilo dalla lista
    }
}

Tutte le lezioni di Fondamenti di scripting in Unity

Esercitati da solo: Playground Unity