Lập Trình Unity Là Gì? Toàn Tập Kiến Thức Cho Người Mới Bắt Đầu

Bạn đam mê lập trình game và muốn tìm hiểu về nền tảng phát triển game phổ biến nhất? Bài viết này sẽ cung cấp cho bạn cái nhìn toàn diện về lập trình Unity là gì, từ khái niệm cơ bản đến cách xây dựng game 2D, giúp bạn tự tin bắt đầu hành trình trở thành nhà phát triển game chuyên nghiệp.

Sơ Lược Kiến Thức Về Lập Trình Viên Unity

Định Nghĩa Lập Trình Unity Là Gì?

Unity là một công cụ phát triển game đa nền tảng mạnh mẽ, được cung cấp bởi Unity Technologies. Nó cho phép các nhà phát triển tạo ra các trò chơi điện tử cho máy tính, console, thiết bị di động và nhiều nền tảng khác. Ưu điểm nổi bật của Unity là khả năng phát triển game bằng phương pháp kéo và thả (drag and drop) trực quan, giúp người mới bắt đầu dễ dàng làm quen.

Từ khi ra mắt lần đầu trên hệ điều hành OS X tại Apple’s Worldwide Developers Conference năm 2005, Unity đã không ngừng phát triển và mở rộng, hỗ trợ tới hơn 27 nền tảng khác nhau. Tính đến nay, đã có 6 phiên bản chính của phần mềm này được phát hành trên toàn cầu. Tại WWDC 2006, Unity vinh dự nhận giải thưởng Best Use of Mac OS X Graphics từ Apple.

Tìm hiểu về lập trình Unity cho người mới bắt đầu

Tại Sao Nên Học Lập Trình Unity?

Lập trình Unity sử dụng 3 ngôn ngữ chính: C#, Boo và UnityScript. Trong đó, C# là ngôn ngữ phổ biến nhất và được cộng đồng lập trình viên Unity ưa chuộng. Mặc dù Unity có giao diện kéo thả tiện lợi, việc nắm vững các ngôn ngữ lập trình này là vô cùng quan trọng.

Lý do là vì khả năng kéo thả của Unity có giới hạn. Các lập trình viên cần sử dụng code để bổ trợ, tạo ra các hiệu ứng phức tạp và tùy chỉnh sâu hơn cho trò chơi. Ví dụ, trong trò chơi bắn máy bay đơn giản, việc kéo thả chỉ giúp tạo giao diện, đặt nhân vật và khung cảnh. Để tạo hiệu ứng bầu trời di chuyển liên tục, các vụ nổ hoặc đường đạn, bạn cần phải lập trình. Đây là cách duy nhất để tạo ra những hiệu ứng tự động và phức tạp.

Unity – nền tảng lập trình game 2D và 3D hàng đầu

Game Trên Unity Được Xây Dựng Và Vận Hành Như Thế Nào?

Để hiểu rõ hơn về lập trình Unity là gì, chúng ta cần nắm vững các khái niệm cơ bản sau:

  • GameObject: Là một đối tượng cụ thể trong game, có thể là nhân vật, đồ vật, hoặc bất kỳ thành phần nào khác.

  • Component: GameObject được cấu tạo từ nhiều Component khác nhau, chẳng hạn như hình ảnh, hành động của nhân vật, mã điều khiển,… Các Functions thường kế thừa từ lớp MonoBehaviour và có thể ghi đè bên trong các class để thực hiện các sự kiện quan trọng. Hai sự kiện phổ biến nhất là:

    • Start(): Chạy một lần duy nhất trước khi hàm Update() được gọi.
    • Update(): Thực hiện liên tục sau mỗi vòng lặp (thường là 25 khung hình mỗi giây). Mỗi thành phần như vậy được gọi là một Component của GameObject.
  • Script: Là tập tin chứa mã nguồn dùng để khởi tạo và xử lý các đối tượng trong game. Unity hỗ trợ C#, JavaScript, BOO để lập trình Script. Script cho phép bạn điều chỉnh thuộc tính của các Component khác, đóng vai trò như “bộ não” điều khiển các bộ phận còn lại của game.

Cấu trúc của một đoạn mã bao gồm 3 thành phần chính:

  • Biến (variable): Chứa giá trị kiểu số hoặc ký tự.
  • Hàm (function): Thực hiện các công việc thông thường với biến và biểu thức toán học. Các function trong Unity được chia thành 2 nhóm: liên quan đến game (system, input, network), đối tượng đặc trưng (object specific) và người dùng định nghĩa (user defined).
  • Chú thích (comment): Bị bỏ qua khi chạy chương trình, dùng để ghi chú hoặc vô hiệu hóa một dòng lệnh.

Lưu ý: Script chỉ hoạt động khi là một thành phần của GameObject.

Minh họa các thành phần cơ bản để xây dựng game trên Unity

Lập Trình C# Trong Unity

Lập trình C# là kỹ năng bắt buộc đối với lập trình viên Unity, vì đây là ngôn ngữ được sử dụng rộng rãi nhất trong cộng đồng. Unity hỗ trợ cả engine 2D và 3D. Người mới bắt đầu nên làm quen với Unity 2D trước khi chuyển sang 3D.

Tìm Hiểu Về Lập Trình Unity 2D

Những Công Cụ Cần Thiết Cho Lập Trình Unity 2D

Unity tích hợp sẵn một editor và IDE (Integrated Development Environment) có tên là MonoDevelop, hỗ trợ lập trình viên soạn thảo code. Để mở các file source, bạn chỉ cần click đúp vào chúng trong Project. Khi tạo mới hoặc thay đổi code, hãy lưu lại để được tự động biên dịch. Các lỗi (error) sẽ được hiển thị màu đỏ và cảnh báo (warning) màu vàng trong cửa sổ Console của Unity.

MonoDevelop bao gồm:

  • Project browser
  • Cửa sổ Class outline
  • Cửa sổ Editor

Các Lệnh Mặc Định Trong Unity 2D

Khi tạo một script mới, Unity sẽ tự động tạo ra các lệnh sau:

  • MonoBehaviour class: Class này là script của bạn, tên class trùng với tên script.
  • Thư viện riêng của Unity: Unity Engine và System Collection (không được xóa).
  • Hai function được tạo sẵn: Start() và Update().

Xây Dựng Chương Trình Unity 2D: Tạo Hiệu Ứng Dịch Chuyển Hình Nền

Dưới đây là hướng dẫn từng bước để tạo hiệu ứng hình nền tự động dịch chuyển liên tục từ trên xuống:

Bước 1: Tạo Object

Sử dụng bộ Assets có sẵn, bao gồm âm thanh, hình ảnh, và các object như máy bay, thiên thạch, bầu trời, vụ nổ,… Trong ví dụ này, chúng ta sử dụng ảnh bầu trời vũ trụ (Gameplay BG) được lưu trữ trong thư mục Assets/Sprite.

Các Assets có sẵn giúp xây dựng game nhanh chóng hơn

Để tạo Object 3D, chọn GameObject -> 3D Object -> Quad.

Tạo đối tượng Quad để làm hình nền

Bước 2: Tô Màu Cho Object

Vào thư mục Assets -> tạo thư mục Materials -> Vào thư mục Materials -> Chuột phải -> Create -> Material.

Bước 3: Tinh Chỉnh Trong Cửa Sổ Inspector

Kéo file Background vừa tạo thả vào khung Element trong cửa sổ Inspector để áp dụng Material vào Components.

Gán thuộc tính Material cho Quad

Tạo project với tên BackGround Quad, sau đó vào lại thư mục Materials và chọn thiết bị sẽ triển khai.

Lựa chọn nền tảng phát hành game

Bấm New texture (ô vuông đen to bên góc phải), một cửa sổ hiện ra để chọn texture cho quad, chọn hình bầu trời bạn muốn.

Nhập Texture (hình ảnh) cho hình nền game

Bước 4: Tạo Script

Vào thư mục Assets -> Script -> Tạo thư mục con tên BG (lưu file lập trình). Trong thư mục BG, tạo script BGScaler bằng C#. Nhấp vào file để mở giao diện viết code Monodevelop. Nhập đoạn code sau:

Màn hình soạn thảo code trong Unity

using UnityEngine;
using System.Collections;

public class BGScaler : MonoBehaviour {

    public float speed = 0.1f;
    private Material _mat;
    private Vector2 offset = Vector2.zero;

    // Use this for initialization
    void Start () {
        _mat = GetComponent<Renderer> ().material;
    }

    // Update is called once per frame
    void Update () {
        offset.y += speed * Time.deltaTime;
        _mat.SetTextureOffset ("_MainTex", offset);
    }
}

_mat sẽ ánh xạ đến thành phần Materials nằm trong Component Renderer. offset sẽ lấy độ dời của tấm ảnh (bằng hàm GetTextureoffset()) dựa trên mat. Parameter Maintext là tên của texture ảnh background trên quad.

Trong hàm Update(), giá trị của offset sẽ liên tục được cập nhật và thay đổi theo hàm này:

  • Tại dòng 20: biến offset thay đổi theo chiều trục y, làm background của _mat dời từ trên xuống dưới với tốc độ speed nhân với Time.deltaTime (giúp hiệu ứng mượt mà).
  • Tại dòng 21: Sau khi đã lấy Material của quad ở Start(), bạn cần set tất cả thay đổi của offset trở lại cho quad thông qua hàm SetTextureoffset() cùng hai parameter Maintextoffset.

Bước 5: Chạy Chương Trình

Nhấp vào nút Run, truyền giá trị speed và sửa lỗi nếu có.

Hiện nay, lập trình Unity là gì luôn là câu hỏi được nhiều doanh nghiệp quan tâm, mở ra cơ hội nghề nghiệp rộng lớn cho những ai đam mê lĩnh vực này. Nếu bạn yêu thích và muốn thử sức mình, đừng ngần ngại bắt đầu ngay hôm nay. Chúc bạn thành công!