Unity••10 min•121 views••
Vòng đời của GameObject
Minh Khoa
Tác giả
1. Cơ bản: Life Cycle cơ bản của một GameObject + MonoBehaviour
Khi một GameObject được tạo ra trong Scene và gắn script MonoBehaviour, nó sẽ đi qua một chuỗi vòng đời:
1.1 Tạo và kích hoạt
- Awake()
- Gọi một lần duy nhất khi script được load (trước cả khi scene start).
- Dùng để: khởi tạo biến, set up references (ví dụ:
GetComponent, load config). - Dù
GameObjectđang disable,Awakevẫn được gọi.
- OnEnable()
- Gọi mỗi khi GameObject hoặc component được enable.
- Nếu bạn disable rồi enable lại,
OnEnable()sẽ chạy lại. - Dùng để: đăng ký event, reset trạng thái tạm.
1.2 Vòng đời khi chạy
- Start()
- Gọi trước frame Update đầu tiên, nhưng sau Awake và OnEnable.
- Dùng để: thực hiện logic cần dữ liệu đã init đầy đủ.
- Nếu GameObject bị disable ở frame đầu tiên thì
Startsẽ chờ đến khi enable.
- Update()
- Gọi mỗi frame, phụ thuộc FPS.
- Dùng cho: logic gameplay (kiểm tra input, AI, animation state).
- LateUpdate()
- Gọi sau tất cả
Update()trong frame đó. - Dùng để: xử lý “theo sau” (camera follow, sync transform sau khi nhân vật đã di chuyển).
- Gọi sau tất cả
- FixedUpdate()
- Gọi theo tần suất cố định (mặc định 0.02s, tức 50 lần/giây).
- Dùng cho: physics (Rigidbody, Force, Collider).
- Nếu muốn game ổn định vật lý → code di chuyển rigidbody nên để ở đây.
1.3 Kết thúc vòng đời
- OnDisable()
- Gọi khi GameObject hoặc component bị disable.
- Dùng để: hủy đăng ký event, clear state, tránh memory leak.
- OnDestroy()
- Gọi khi GameObject bị Destroy hoặc scene bị unload.
- Dùng để: giải phóng tài nguyên, lưu trạng thái.
