Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Unity là một trong những engine phổ biến nhất cho game di động và game độc lập, vì vậy vị trí lập trình viên Unity luôn có nhu cầu. Phỏng vấn thường kiểm tra C#, hiểu biết về vòng đời đối tượng trong Unity, vật lý, hiệu năng và khả năng làm gameplay hoàn chỉnh. Bài này tổng hợp những chủ đề chính.
struct (như Vector3) là kiểu giá trị, class là kiểu tham chiếu. Hiểu điều này giúp tránh lỗi khi truyền và sao chép dữ liệu.List, Dictionary, Queue, HashSet và khi nào dùng.| Hàm | Khi nào gọi |
|---|---|
| Awake | Khi đối tượng được nạp, trước mọi Start |
| OnEnable | Mỗi khi đối tượng được bật |
| Start | Trước khung hình đầu tiên mà đối tượng hoạt động |
| Update | Mỗi khung hình |
| FixedUpdate | Theo bước thời gian cố định, dùng cho vật lý |
| LateUpdate | Sau mọi Update, thường dùng cho camera đi theo |
| OnDisable, OnDestroy | Khi bị tắt hoặc hủy, dọn dẹp tài nguyên |
Câu hỏi kinh điển: khi nào dùng Update và khi nào dùng FixedUpdate? Đưa đầu vào và logic hiển thị vào Update, còn lực và di chuyển bằng Rigidbody vào FixedUpdate để kết quả vật lý ổn định, không phụ thuộc tốc độ khung hình.
using UnityEngine;public class Mover : MonoBehaviour{ [SerializeField] private float speed = 5f; void Update() { float h = Input.GetAxis("Horizontal"); transform.Translate(Vector3.right * h * speed * Time.deltaTime); }}Nhân với Time.deltaTime để chuyển động độc lập với tốc độ khung hình, nếu không máy mạnh chạy nhanh hơn máy yếu.
OnTriggerEnter); collision là va chạm vật lý thật (OnCollisionEnter).new liên tục mỗi khung hình.GetComponent một lần trong Awake thay vì mỗi khung hình; tránh Find trong vòng lặp.private Rigidbody rb;void Awake(){ rb = GetComponent<Rigidbody>(); // cache một lần}Unity dùng mô hình thành phần: một GameObject gồm nhiều Component. Hãy ưu tiên các script nhỏ, mỗi script một trách nhiệm. Dùng ScriptableObject để lưu dữ liệu cấu hình như chỉ số kẻ địch, vật phẩm, giúp dữ liệu tách khỏi code và dễ chỉnh bởi designer. Dùng sự kiện để giảm phụ thuộc giữa các hệ thống như điểm số, giao diện, âm thanh. Với dự án lớn, các mẫu thiết kế như State Machine cho nhân vật và AI, Observer cho sự kiện, Singleton có kiểm soát hoặc Service Locator thường được nhắc đến.
Nhà tuyển dụng game rất chuộng việc xem sản phẩm thật. Hãy chuẩn bị bản demo chạy được, dù nhỏ, kèm video ngắn hoặc bản build. Sẵn sàng trả lời: vòng lặp gameplay chính là gì, bạn gặp lỗi khó nhất nào, bạn tối ưu thế nào cho thiết bị yếu, nếu thêm một loại kẻ địch mới thì cần sửa gì. Việc tham gia game jam là cách rất tốt để có sản phẩm hoàn chỉnh trong thời gian ngắn và có chuyện để kể.
Lập trình game đòi hỏi vừa nắm vững C# vừa hiểu cách engine hoạt động. Hãy hoàn thành ít nhất một game nhỏ từ đầu đến cuối rồi tự mổ xẻ nó: kiến trúc, hiệu năng, những điều muốn làm lại. Đó là phần chuẩn bị tốt nhất cho phỏng vấn.
Nếu bạn muốn học Unity qua dự án thực hành, hãy xem các khóa game tại codebem.com.
Nguyễn Đình Cường
0 comment