Skip to main content

Awake và Start

Tiêu chí

Awake()Start()

Thời điểm gọi

Ngay khi script được nạp/khởi tạo (khi scene load hoặc Instantiate prefab)

Khung hình đầu tiên khi component được enable sau Awake/OnEnable

Yêu cầu enable

Gọi dù component bị Disable

Chỉ gọi khi component Enable

Mục đích chính

Khởi tạo nội bộ: tạo dữ liệu, tìm & cache reference trong cùng GameObject

Khởi tạo phụ thuộc ngoại: cần đảm bảo các đối tượng khác đã Awake xong

Thứ tự giữa các object

Không đảm bảo thứ tự Awake giữa các object khác nhau

Không đảm bảo thứ tự Start giữa các object khác nhau

Gọi lại khi Instantiate

Có (mỗi lần Instantiate)

Có (khi instance được enable và tới frame đầu)

Best practice

Cache component (GetComponent), set giá trị mặc định, đăng ký dịch vụ/DI

Kết nối hệ thống khác, subscribe event ngoài, logic cần đảm bảo đối tượng khác đã sẵn sàng

Lưu ý

Gọi API phụ thuộc đối tượng khác chưa sẵn sàng

Công việc nặng mỗi frame; tránh dùng nếu chỉ cần ở

Awake