SerializeField
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 15 trên 85.
Một trường public có hai tác dụng cùng lúc: nó hiển thị trong Inspector, và mọi script khác đều có thể đọc và thay đổi nó. Thường thì bạn chỉ cần tác dụng đầu tiên. Trường private (mặc định trong C#) chỉ có thể được thay đổi bởi chính lớp đó, nên không script nào khác có thể làm hỏng nó, nhưng Unity không hiển thị trường này trong Inspector.
[SerializeField] yêu cầu Unity lưu và hiển thị trường private dù vậy. Tầm bắn của tháp pháo này được thiết lập riêng cho từng tháp trong Inspector, và không script nào khác có thể tác động đến nó:
[SerializeField] private float range = 5f;
void Start()
{
Debug.Log("Range: " + range);
}Đây là cách hầu hết code Unity lưu các cài đặt: để ở dạng private, kèm theo [SerializeField]. Hãy chú ý trường hợp ngược lại: đặt một trường thành private nhưng quên thuộc tính này, Unity sẽ âm thầm bỏ giá trị đã lưu trong cảnh. Trường đó sẽ quay về giá trị trong code, mà không có lỗi nào báo cho bạn biết.
Thử thách
DễẨn chiều cao của đèn khỏi các script khác nhưng vẫn giữ nó trong Inspector.
- Đổi trường thành
[SerializeField] private float height = 1f;. - Giữ nguyên
Start(): Inspector đặtheightthành 4.
Nhấn Play: đèn vẫn treo ở độ cao 4. Sau đó nhấn Check.
Tự làm thử
using UnityEngine;
public class LampHeight : MonoBehaviour
{
public float height = 1f;
void Start()
{
transform.position = new Vector3(0, height, 0);
}
}
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 đèn3Inspector
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