Menu
CoddyTech

Remover o mais recente

Parte da seção Fundamentos de Scripting no Unity do Journey de Unity da Coddy. Lição 66 de 85.

O item mais recente de uma lista é o último, no índice Count - 1. Remova-o com Remove e verifique primeiro se Count > 0: em uma lista vazia, não há último item, e tentar acessá-lo interrompe o script com uma ArgumentOutOfRangeException.

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

Remover um item da lista não afeta o objeto na cena: oculte-o ou destrua-o você mesmo.

challenge icon

Desafio

Médio

Faça com que a tecla Espaço remova a caixa mais recente.

  1. Em Update(), quando Input.GetKeyDown(KeyCode.Space) for verdadeiro e somente quando boxes.Count > 0, obtenha GameObject newest = boxes[boxes.Count - 1];.
  2. Oculte-a com newest.SetActive(false); e remova-a com boxes.Remove(newest);.
  3. Registre "Boxes: " + boxes.Count.

Pressione “Jogar”, clique três vezes e, em seguida, pressione Espaço: a última caixa desaparece. Depois, “Verificar”.

Experimente você mesmo

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: oculte a caixa mais recente e remova-a da lista
    }
}

Todas as lições de Fundamentos de Scripting no Unity

Pratique por conta própria: Playground de Unity