OnEnable và OnDisable
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 72 trên 85.
OnEnable() chạy mỗi khi một script được kích hoạt: khi đối tượng của nó xuất hiện lần đầu (ngay sau Awake()), và mỗi lần đối tượng được hiển thị bằng SetActive(true) hoặc script được bật lại bằng enabled = true. OnDisable() chạy mỗi khi đối tượng bị ẩn, script bị tắt hoặc đối tượng bị hủy.
Một cổng dịch chuyển được script khác mở và đóng bằng SetActive có thể tự ghi nhật ký:
void OnEnable()
{
Debug.Log("Portal open");
}
void OnDisable()
{
Debug.Log("Portal closed");
}Cổng dịch chuyển ghi nhật ký Portal open khi cảnh bắt đầu. Ẩn rồi hiển thị lại cổng sẽ ghi nhật ký Portal closed, sau đó là Portal open, trong khi Awake() và Start() không chạy lần thứ hai. Vì vậy, code cần chạy mỗi khi đối tượng xuất hiện, chẳng hạn như đặt lại bộ đếm thời gian hoặc đếm số lượt ghé thăm, cần nằm trong OnEnable(). Khi cổng dịch chuyển bị ẩn, Update() của nó không chạy. Vì vậy, một script trên đối tượng khác sẽ mở và đóng cổng.
Thử thách
Trung bìnhCho mỗi Switchable báo cáo khi được bật và tắt.
- Thêm trường
int count;vàvoid OnEnable(): tăngcountlên 1, sau đó ghi nhật kýname + " on (" + count + ")", chẳng hạn nhưBubble on (2). - Thêm
void OnDisable()để ghi nhật kýname + " off".
Nhấn Chơi rồi nhấn Space: Console hiển thị Player on (1), sau đó là Bubble on (1) và Bubble off. Rồi nhấn Kiểm tra.
Tự làm thử
using UnityEngine;
public class Switchable : MonoBehaviour
{
public GameObject target;
void Update()
{
if (target != null && Input.GetKeyDown(KeyCode.Space))
{
target.SetActive(!target.activeSelf);
}
}
// Mỗi khi đối tượng này được bật: tăng số lần bật và ghi nhật ký "<name> on (<count>)"
// Mỗi khi đối tượng này tắt: ghi nhật ký "<name> off"
}
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ơi12Vòng đời của script
Awake và StartUpdate và LateUpdateOnEnable và OnDisableThứ tự vòng đờiÔn tập: Trình ghi nhật ký vòng đờiTự luyện tập: Playground Unity