Danh sách đối tượng
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 65 trên 85.
Mảng có độ dài cố định, được xác định khi tạo. Bộ tạo vật thể không biết trước sẽ tạo bao nhiêu đối tượng, nên nó lưu chúng trong List<T>: mảng của C# có thể tăng kích thước. Nó nằm trong System.Collections.Generic, còn T là kiểu của phần tử mà nó chứa. Đài phun nước này ghi nhớ mọi đồng xu nó tạo ra:
using System.Collections.Generic;
using UnityEngine;
public class CoinFountain : MonoBehaviour
{
public GameObject coinPrefab;
List<GameObject> coins = new List<GameObject>();
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
GameObject coin = Instantiate(coinPrefab, transform.position, Quaternion.identity);
coins.Add(coin);
Debug.Log(coins.Count + " coins");
}
}
}Add thêm một phần tử vào cuối danh sách, còn Count cho biết có bao nhiêu phần tử, trong khi mảng dùng Length. Bạn đọc phần tử như với mảng: coins[0] là đồng xu đầu tiên, còn foreach (GameObject c in coins) lần lượt duyệt qua tất cả. coins.Remove(coin) xóa phần tử đó, còn coins.RemoveAt(0) xóa phần tử đầu tiên; các phần tử phía sau nó lùi xuống một vị trí.
Bạn phải tạo chính danh sách bằng new. Một trường được khai báo là List<GameObject> coins; sẽ chứa null, và lần gọi Add đầu tiên sẽ dừng lại với lỗi NullReferenceException.
Thử thách
Trung bìnhMỗi lần nhấp sẽ thêm một hộp vào danh sách.
- Thêm
using System.Collections.Generic;và trườngList<GameObject> boxes = new List<GameObject>();. - Khi nhấp chuột, tạo một hộp tại
transform.position + new Vector3(boxes.Count * 1.5f, 0, 0), không xoay hộp và thêm hộp đó vàoboxes. - Ghi nhật ký
"Boxes: " + boxes.Count.
Nhấn Play rồi nhấp chuột ba lần: ba hộp sẽ xếp thành một hàng. Sau đó nhấn Check.
Tự làm thử
using UnityEngine;
public class BoxStacker : MonoBehaviour
{
public GameObject boxPrefab;
// boxes: một danh sách (list) List<GameObject> riêng tư
void Update()
{
// Nhấp chuột: tạo một hộp, đặt hộp mới lệch sang phải thêm 1.5 cho mỗi hộp trong danh sách, thêm hộp mới vào danh sách rồi ghi số lượng vào nhật ký
}
}
Tất cả bài học trong Những kiến thức cơ bản về lập trình trong Unity
1C# cơ bản trong Unity
Xin chào, UnityBiếnSố thập phân cần có fVăn bản trong ConsoleBiến có thể ghi nhớIf và elseSo sánh các sốÔn tập: Thu thập xu7Vòng lặp và phương thức
Lặp lại với forVòng lặp lồng nhauViết phương thứcPhương thức trả lờiMảngÔn tập: Cầu thang2Làm cho nó chuyển động
Đặt khối lập phươngDi chuyển theo từng khung hìnhXoay mỗi giâyĐiều khiển bằng các phímÔn tập: Lái khối lập phương5Vectơ
Cộng vectơPhương hướngKhông gian cục bộ và không gian thế giớiTốc độ theo đường chéoKhoảng cách giữa các vậtVector3 là một structÔn tập: Người điều khiển drone8GameObject và thành phần
Tham chiếu trong InspectorLấy một thành phầnThành phần bị thiếuThêm một thành phầnRequireComponentHiện và ẩnÔn tập: Công tắc đèn11Prefab và tạo đối tượng
Prefab và InstantiateTạo đối tượng theo bộ hẹn giờTạo đối tượng theo lướiDanh sách đối tượngXóa đối tượng mới nhấtHủy đối tượngTạo đối tượng ngẫu nhiênÔn tập: Pháo hoa3Inspector
Các trường trong InspectorSerializeFieldSố thực và MathfThuộc tính trong InspectorÔn tập: thang máy6Biến đổi và hệ phân cấp
Đối tượng cha và conKéo cờ lênTỷ lệNhìn vào các vật thểDi chuyển đến một điểmÔn tập: Mặt trăng quay quanh9Dự án: Bắt lấy ngôi sao
Người bắt saoNgôi sao rơiTự luyện tập: Playground Unity