Như bài trước, chúng mình đã giới thiệu các bạn tổng quan về Unity về cách tải và giao diện Unity Editor. Với tiếp nối, thì bọn mình sẽ đem đến các bạn, cách để tìm kiếm Assets, khởi tạo scene và quản lý mã nguồn.


1. Chuẩn bị Assets:

a) Tải Assets:

Các bạn có thể tìm kiếm hình ảnh các quân cờ và bàn cờ trên các nền tảng cung cấp Assets nổi tiếng như Unity Assets Store hoặc Itch.io để tải và sử dụng. Lưu ý là các bạn nên tìm kiếm các assets cung cấp bản quyền (Licence) sử dụng và sửa chửa nhé.

b) Đưa Assets vào Project:

Sau khi các bạn đã chuẩn bị xong các hình ảnh quân cờ và bàn cờ, các bạn có thể import vào Unity bằng cách như sau:

  • Cách 1: Import thông qua Package Manager của Unity (Window -> Package Manager).

  • Cách 2: Kéo folder chứa Assets bạn cần vào thẳng Project. Lưu ý là các bạn nên bỏ trong thư mục Assets và tạo sắp xếp thư mục như bài trước.

chessfolder.png

2. Tạo Scene và Khởi tạo Script:

a) Tạo Scene:

Định nghĩa Scene:

Đầu tiên là tạo scene, vậy thì phải hiểu scene là gì, scene ở đây là một thành phần cơ bản trong hệ thống của Unity. Scene đại diện cho một không gian làm việc hoặc môi trường trong game. Nó là nơi bạn tổ chức các đối tượng (objects), ánh sáng, camera, âm thanh, và các yếu tố khác tạo nên trò chơi hoặc ứng dụng.

Nói về scene thì mình cũng sẽ nói sơ qua 1 chút về các hệ trục tọa độ trong Unity, thì Unity về cơ bản sẽ có 4 hệ trục tọa độ:

  • Trục thế giới (World Coordinate System): là hệ trục 3D của thế giới trong Unity 3d, đây cũng là trục cố định và áp dụng cho tất cả các gameobject có trong 1 scene.

  • Trục tọa độ màn hình (Screen Coordinate System): là hệ trục 2D được tính bằng pixel, được tính từ (0, 0) góc dưới bên trái màn hình và tính tới (Screen.width, Sceen.height), hệ trục này sẽ thay đổi tùy vào tỷ lệ / độ phân giải của màn hình của thiết bị.

  • Trục GUI (GUI Coordinate System): hệ trục này khá tương tự hệ trục tọa độ màn hình chỉ khác là điểm bắt đầu (0, 0) được tính từ góc trên bên trái màn hình.

  • Trục GUI (GUI Coordinate System): Trục viewport (Viewport Coordinate System): hệ trục này cũng khá giống 2 trục màn hình và GUI, tuy nhiên nó không bị phụ thuộc vào tỷ lệ / độ phân giải của màn hình thiết bị, mà nó sẽ là cố định, hệ này sẽ tính từ điểm dưới bên trái màn hình (0, 0) tới điểm trên bên phải màn hình (1, 1), vd điểm (0.5, 0.5) luôn luôn ở giữa màn hình cho dù là thiết bị có độ phân giải là bao nhiêu.

Hướng dẫn tạo Scene:

  • Các bạn từ thư mục scene đã tạo trước đó, chuột phải vào sau đó chọn Create, chọn Scene, 1 scene mới sẽ được tạo.

create scene.png
  • Mặc định Unity khi khởi tạo sẽ có 1 scene trống, tuy nhiên vì mình tính sẽ làm 2 scene, 1 để làm main menu, 1 cho game nên mình sẽ tạo thêm 1 scene đặt tên là Start và Game.

sceneDemo.png

b) Khởi tạo script:

  • Tạm bỏ qua scene Start, mình sẽ tập trung vào scene Game trước, trước tiên mình sẽ hướng dẫn tạo gameobject (Gameobject là một đối tượng cơ bản trong mọi Scene - có thể hiển thị hoặc không hiển thị nhưng ở trong scene thì đều là gameobject, và là thành phần trung tâm của hệ thống Unity. GameObject có thể xem là 1 hộp chứa dùng để tổ chức và quản lý các thành phần (components), giúp tạo ra các đối tượng trong game hoặc ứng dụng.

  • Tạo gameobject:

Create Empty Object.png
  • Các bạn cũng bấm chuột phải vào cửa sổ Hierachy, chọn xuống create empty vậy là xong, 1 object empty đã được tạo, thì với gameobject này sẽ không có bất kỳ thành phần (component) nào khác ngoài Transform. Transform là gì: Thì về cơ bản nó là một component bắt buộc gắn với mọi GameObject. Transform xác định vị trí (position), góc xoay (rotation), và kích thước (scale) của GameObject trong không gian 3D hoặc 2D.

  • Tiếp đến mình vào folder Scripts, chuột phải chọn Create/Folder, đặt tên folder là Managers để chứa tất cả script quản lý của game ở đây.

  • Tiếp theo trong folder Managers mình tiếp tục chuột phải chọn Create/Scripts đặt tên script mới tạo là GameManager.

  • Mở script lên, mặc định thì class của chúng ta sẽ được kế thừa lớp Monobehavior của Unity, và sẽ có 2 hàm mặc định là Start() và Update() như sau.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameManager : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

  • Mình sẽ nói sơ qua về những thứ mới ở đây, đầu tiên là MonoBehavior nó là 1 lớp cơ bản trong Unity, nếu muốn gắn script vào gameobject chúng ta bắt buộc phải kế thừa MonoBehavior. Monobehavior sẽ cung cấp cho chúng ta các phương thức và tính năng cần thiết để tương tác với gameobject, cũng như là vòng đời, quản lý sự kiện và điều khiển hành vi của gameobject trong Unity. Về vòng đời của script các bạn có thể tham khảo: Unity - Manual: Order of execution for event functions

  • Còn về 2 phương thức mặc định là Start và Update thì về cơ bản, khi 1 gameobject được khởi chạy, thì script có hàm Start được gắn vào gameobject sẽ khởi chạy 1 lần, còn update sẽ được gọi xuyên suốt chương trình cho đến khi gameobject bị phá hủy, hàm update sẽ được gọi mỗi 1 lần mỗi frame (vì vậy nên hàm này cũng nên sử dụng 1 cách có tính toán vì nếu lạm dụng có thể gây nặng chương trình ảnh hưởng tới game)


Tác giả: Nguyễn Minh Thuận