ASCENO
Loading Asceno
Asceno
UnityBài 507/09/2026Asceno

Component trong Unity là gì? Vì sao Unity dùng Component?

Giải thích Component trong Unity cho người mới: Component là các mảnh chức năng gắn vào GameObject, cách thêm Component trong Inspector, ví dụ với Rigidbody, cách script MonoBehaviour trở thành Component và vì sao Unity dùng mô hình composition để xây dựng gameplay linh hoạt, tái sử dụng và dễ mở rộng.

Component trong Unity là gì? Vì sao Unity dùng Component?

Nếu GameObject là “đối tượng” trong Scene, thì Component là những mảnh chức năng được gắn lên GameObject để quyết định đối tượng đó có dữ liệu gì và có thể làm gì. Đây là một trong những khái niệm quan trọng nhất của Unity.

Một Cube có thể chỉ là một GameObject rất đơn giản. Khi bạn gắn Mesh Renderer, nó được hiển thị; gắn Collider, nó có vùng va chạm; gắn Rigidbody, nó tham gia mô phỏng vật lý; gắn script C#, nó có hành vi do bạn lập trình.

GameObject và Component trong Unity
Hình 1 — Một GameObject có thể chứa nhiều Component. ASCENO

1. Component trong Unity là gì?

Component là một phần chức năng hoặc dữ liệu được gắn vào GameObject. Mỗi Component đảm nhiệm một vai trò tương đối rõ ràng. Unity kết hợp nhiều Component trên cùng một GameObject để tạo ra đối tượng hoàn chỉnh.

Mọi GameObject thông thường đều có Transform. Với UI, bạn thường gặp RectTransform, là Transform chuyên cho bố cục giao diện. Transform quyết định vị trí, góc xoay và kích thước của đối tượng.

Định nghĩa Component và các Component phổ biến
Hình 2 — Component là các mảnh chức năng gắn vào GameObject. ASCENO

2. Các Component phổ biến

  • Transform: Position, Rotation và Scale.
  • Mesh Renderer: hiển thị mesh của vật thể 3D.
  • Collider: tạo vùng va chạm.
  • Rigidbody: đưa GameObject vào mô phỏng vật lý.
  • Camera: render hình ảnh mà người chơi nhìn thấy.
  • Light: tạo nguồn sáng cho Scene.
  • Audio Source: phát âm thanh.
  • Animator: điều khiển animation.
  • Script / MonoBehaviour: thêm logic gameplay do bạn viết.

3. Cách thêm Component vào GameObject

  1. Chọn GameObject trong Hierarchy.
  2. Nhìn sang Inspector.
  3. Nhấn Add Component.
  4. Gõ tên Component cần thêm, ví dụ Rigidbody.
  5. Chọn Component trong kết quả tìm kiếm.

Component mới sẽ xuất hiện trong Inspector và bạn có thể chỉnh các thuộc tính của nó ngay tại đó.

Các bước thêm Component vào GameObject
Hình 3 — Các bước thêm Component trong Inspector. ASCENO

4. Ví dụ: thêm Rigidbody

Rigidbody là ví dụ dễ hiểu vì sau khi thêm nó, một vật thể 3D có thể chịu tác động của gravity và physics. Chọn Cube, nhấn Add Component, tìm Rigidbody rồi thêm vào. Sau đó nhấn Play để quan sát.

Rigidbody không tự thay thế Collider. Nếu bạn muốn vật thể va chạm đúng với môi trường, hãy kiểm tra GameObject có Collider phù hợp.

Ví dụ thêm Rigidbody Component
Hình 4 — Ví dụ thêm Rigidbody cho Cube. ASCENO

5. Component có các thuộc tính riêng

Mỗi Component có một nhóm thuộc tính riêng trong Inspector. Ví dụ Rigidbody có Mass, Drag, Use Gravity và các thiết lập vật lý; Audio Source có Audio Clip, Volume và Loop; Light có Type, Color và Intensity.

Vì vậy, cùng một loại Component nhưng thay đổi giá trị khác nhau có thể tạo ra hành vi rất khác nhau.

Thuộc tính Component trong Inspector
Hình 5 — Component có thể được tùy chỉnh bằng các property trong Inspector. ASCENO

6. Script C# cũng là Component

Khi bạn tạo một script kế thừa từ MonoBehaviour và gắn script đó vào GameObject, script xuất hiện trong Inspector như một Component. Đây là cách phổ biến để bạn thêm logic riêng vào game.

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    public float moveSpeed = 5f;
}

Các field được Unity serialize có thể xuất hiện trong Inspector để bạn chỉnh mà không cần sửa code mỗi lần.

Script C# MonoBehaviour là một Component
Hình 6 — Script MonoBehaviour có thể được gắn như một Component. ASCENO

7. Vì sao Unity dùng Component?

Unity dùng mô hình Component vì nó cho phép xây dựng đối tượng bằng cách ghép các chức năng nhỏ thay vì tạo một lớp khổng lồ chứa mọi thứ. Cách này thường được gọi là composition.

  • Tái sử dụng: cùng một Component có thể dùng trên nhiều GameObject.
  • Linh hoạt: thêm hoặc bớt chức năng mà không cần xây lại toàn bộ đối tượng.
  • Dễ quản lý: mỗi Component tập trung vào một nhiệm vụ.
  • Editor-friendly: Component và property hiển thị trực tiếp trong Inspector.
  • Dễ mở rộng: bạn có thể viết script Component riêng rồi kết hợp với Component có sẵn.
Lý do Unity sử dụng Component
Hình 7 — Unity ghép nhiều Component để tạo hành vi cho GameObject. ASCENO

8. Component phối hợp với nhau như thế nào?

Trong gameplay thực tế, các Component thường phối hợp. Ví dụ một Player có thể có Transform để lưu vị trí, Collider để va chạm, Rigidbody hoặc Character Controller để di chuyển, Animator để chạy animation, Audio Source để phát âm thanh và PlayerController để điều khiển logic.

Trong code, một Component có thể lấy Component khác trên cùng GameObject bằng GetComponent<T>(). Với dependency bắt buộc, Unity cũng có attribute RequireComponent để giúp đảm bảo GameObject có Component cần thiết.

9. Bật, tắt và xóa Component

Nhiều Component có checkbox để bật/tắt. Bạn cũng có thể mở menu của Component để Reset hoặc Remove Component. Riêng Transform của GameObject thông thường là thành phần bắt buộc và không thể xóa theo cách thông thường.

10. Những nhầm lẫn người mới thường gặp

  • Nhầm GameObject với Component: GameObject là đối tượng chứa Component.
  • Thêm Rigidbody nhưng không có Collider: physics và collision là hai phần liên quan nhưng không phải một Component duy nhất.
  • Gắn quá nhiều chức năng vào một script: nên chia logic thành các Component có trách nhiệm rõ ràng khi project lớn dần.
  • Không kiểm tra Inspector: script có thể đúng nhưng reference hoặc property trong Component chưa được cấu hình.
  • Chỉnh trong Play Mode rồi mất thay đổi: nhiều thay đổi Inspector khi đang Play sẽ bị reset khi Stop.

11. Bài tập 10 phút

  1. Tạo một Cube trong Scene.
  2. Quan sát Transform, Mesh Filter, Mesh Renderer và Collider trong Inspector.
  3. Thêm Rigidbody và nhấn Play.
  4. Thử bật/tắt Use Gravity.
  5. Tạo một script MonoBehaviour có biến moveSpeed rồi gắn vào Cube.
  6. Thay đổi giá trị moveSpeed trong Inspector.

Bạn nên nhớ điều gì?

GameObject cho biết “đó là đối tượng nào”; Component quyết định “đối tượng đó có dữ liệu và chức năng gì”. Nắm được tư duy này sẽ giúp bạn hiểu phần lớn cách Unity tổ chức gameplay trong mô hình GameObject/Component cổ điển.

Tóm tắt tư duy Component trong Unity
Hình 8 — GameObject là cái gì; Component quyết định nó làm gì. ASCENO

Bài tiếp theo nên đọc: Transform trong Unity — Position, Rotation và Scale hoạt động như thế nào?

ASCENO • Unity Beginner Series