Menu
CoddyTech

Xóa đối tượng mới nhất

Thuộc phần Những kiến thức cơ bản về lập trình trong Unity trong hành trình Unity của Coddy. Bài học 66 trên 85.

Phần tử mới nhất của danh sách nằm ở cuối danh sách, tại chỉ số Count - 1. Xóa phần tử đó bằng Remove, và trước tiên hãy kiểm tra Count > 0: danh sách rỗng thì không có phần tử cuối cùng, còn đọc phần tử đó sẽ khiến tập lệnh dừng với lỗi ArgumentOutOfRangeException.

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

Xóa một phần tử khỏi danh sách không ảnh hưởng đến đối tượng trong cảnh: bạn cần tự ẩn hoặc hủy đối tượng đó.

challenge icon

Thử thách

Trung bình

Dùng Space để thu hồi chiếc hộp mới nhất.

  1. Trong Update(), khi Input.GetKeyDown(KeyCode.Space) và chỉ khi boxes.Count > 0, lấy GameObject newest = boxes[boxes.Count - 1];.
  2. Ẩn hộp đó bằng newest.SetActive(false); rồi xóa hộp khỏi danh sách bằng boxes.Remove(newest);.
  3. Ghi nhật ký "Boxes: " + boxes.Count.

Nhấn Chơi, nhấp ba lần, rồi nhấn Space: chiếc hộp cuối cùng biến mất. Sau đó nhấn Kiểm tra.

Tự làm thử

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: ẩn hộp mới nhất và xóa hộp đó khỏi danh sách
    }
}

Tất cả bài học trong Những kiến thức cơ bản về lập trình trong Unity

Tự luyện tập: Playground Unity