Link to original video by Jason Weimann (GameDev)

Unity3D GameDev Interview Questions

Outline Video Unity3D GameDev Interview Questions

Tóm tắt ngắn:

Tóm tắt chi tiết:

Video được chia thành các phần chính sau:

Phần 1: Giới thiệu và lời chào: Jason giới thiệu video hướng dẫn các câu hỏi phỏng vấn Unity3D, bao gồm cả những câu hỏi từ các công ty không làm game. Ông cũng thông báo về việc đạt 100.000 người đăng ký và dự định làm các video mới về việc tạo game trong Unity 2020 và tour văn phòng.

Phần 2: Update vs FixedUpdate: Jason giải thích sự khác biệt giữa hai hàm này. Update chạy mỗi frame, phù hợp với logic game và input. FixedUpdate chạy với tốc độ cố định (mặc định 50fps), xử lý vật lý. Ông minh họa bằng mã nguồn, cho thấy sự khác biệt về tần suất gọi hàm và thời gian thực thi. Ông nhấn mạnh việc xử lý input trong Update và vật lý trong FixedUpdate để tránh xung đột và lỗi.

Phần 3: Coroutine và đa luồng: Jason giải thích Coroutine là một cách để chạy mã trong một khoảng thời gian nhất định, nhưng không phải là đa luồng. Ông nhấn mạnh rằng Coroutine không cải thiện hiệu năng mà thậm chí còn tiêu tốn một chút. Ông cũng đề cập đến việc quản lý Coroutine bằng cách lưu trữ tham chiếu để có thể dừng chúng một cách chính xác.

Phần 4: Bài toán FizzBuzz: Đây là một bài toán lập trình cơ bản để kiểm tra kỹ năng lập trình vòng lặp và toán tử modulo (%). Jason trình bày giải pháp sử dụng vòng lặp for và toán tử modulo để in ra "Fizz", "Buzz", "FizzBuzz" hoặc số tương ứng. Ông khuyến khích người xem luyện tập các bài toán lập trình tương tự để chuẩn bị cho phỏng vấn.

Phần 5: Lưu trữ dữ liệu trong Unity: Jason giới thiệu hai cách lưu trữ dữ liệu: sử dụng PlayerPrefs (cho dữ liệu đơn giản như số nguyên, chuỗi, boolean) và JSON serialization (cho dữ liệu phức tạp hơn, được lưu trữ dưới dạng chuỗi JSON). Ông minh họa bằng mã nguồn, cho thấy cách lưu và đọc dữ liệu bằng cả hai phương pháp.

Phần 6: Di chuyển đối tượng: Jason thảo luận về cách di chuyển đối tượng trong Unity, đề cập đến việc sử dụng hệ thống NavMesh cho di chuyển trên mặt phẳng và sử dụng Vector3.Lerp hoặc Vector2.Lerp cho di chuyển theo thời gian. Ông nhấn mạnh tầm quan trọng của việc hiểu ngữ cảnh và lựa chọn phương pháp phù hợp.

Phần 7: Thiết kế hệ thống (ví dụ: hệ thống điểm số): Jason nhấn mạnh tầm quan trọng của việc đặt câu hỏi để hiểu rõ yêu cầu trước khi thiết kế hệ thống. Ông đưa ra ví dụ về việc thiết kế hệ thống điểm số cho một game đối kháng, cho thấy cách tiếp cận vấn đề bằng cách đặt câu hỏi làm rõ yêu cầu và đưa ra các giải pháp khác nhau tùy thuộc vào ngữ cảnh. Ông khuyên nên chọn giải pháp đơn giản và hiệu quả nhất.

Phần 8: Lời kết: Jason khuyến khích người xem tìm hiểu về công ty và dự án mà họ phỏng vấn để chuẩn bị tốt hơn. Ông cũng nhấn mạnh tầm quan trọng của việc hiểu rõ sản phẩm của công ty và xem xét xem đó có phải là môi trường làm việc phù hợp hay không.