Đối tượng trong Unity với C# là thành phần quan trọng trong lập trình hướng đối tượng (OOP). Trong lập trình game, đối tượng có thể là hiệp sĩ, rồng, hoặc hòn đá. Chúng ta sử dụng nhiều class để xây dựng hành vi và tương tác giữa các đối tượng. Mỗi class là bản thiết kế của một đối tượng, giúp chia chức năng thành các class riêng biệt. Điều này giúp dễ dàng sửa lỗi, bảo trì và tái sử dụng.
Trong Unity, một class cơ bản là một script. Giai đoạn đầu sử dụng Unity, các class thường kế thừa MonoBehaviour để tạo ra Component. Component này có thể gắn vào GameObject. Hôm nay, chúng ta sẽ học cách tạo và cấu trúc một component class trong Unity.
Cách tạo Component class trong Unity
Hành vi của GameObjects được điều khiển bởi các Component được gắn liền với chúng. Mỗi Component là một script chứa C# class giúp bạn định nghĩa hành vi, thuộc tính của component. Bạn có thể tạo class mới từ menu Create ở trên cùng bên trái của cửa sổ Project hoặc bằng cách chọn Assets > Create > C# Script từ menu chính.
Tập lệnh mới sẽ được tạo trong thư mục bạn đã chọn trong cửa sổ Project. Bạn nhớ đặt tên cho script ngay tại thời điểm này để tránh phải sửa lại về sau.
Nội dung
Cấu trúc một class Component trong Unity
Nội dung ban đầu của script sẽ trông giống như thế này:
using UnityEngine;
using System.Collections;
public class NewBehaviourScript : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
}
Bạn có thể coi class như một bản thiết kế để tạo một Component mới có thể gắn vào GameObject. Mỗi lần bạn đính kèm một thành phần tập lệnh vào GameObject, nó sẽ tạo một phiên bản mới của đối tượng được định nghĩa bởi bản thiết kế. Tên của class được lấy từ tên bạn đã cung cấp khi tạo script. Tên class và tên script phải giống nhau để có thể đính kèm Component vào GameObject.
Hàm Update là nơi sẽ xử lý việc cập nhật mỗi frame cho GameObject. Trong này có thể bao gồm chuyển động, kích hoạt hành động và phản hồi Input của người dùng, về cơ bản là mọi thứ cần được xử lý theo thời gian trong quá trình trò chơi hoạt động.
Hàm Start sẽ được Unity gọi trước khi Update được gọi lần đầu tiên và là nơi lý tưởng để thực hiện các công việc khởi tạo biến và đối tượng.
Ngoài Start và Update, có rất nhiều hàm có sẵn khác của Unity như Awake, LateUpdate, OnEnable, OnDisable,… Việc nắm được thứ tự thực hiện của các hàm có sẵn này là rất quan trọng để tránh các lỗi khi chạy game liên quan đến khởi tạo sai thứ tự. Bạn có thể nắm được thứ tự thực hiện của tất cả các hàm trong Unity MonoBehaviour thông qua ảnh sau:
Cách thay đổi giá trị biến thông qua Unity Inspector
Khi class của bạn kế thừa từ MonoBehaviour, các thuộc tính và giá trị trong class đó có thể chỉnh sửa trực tiếp từ Inspector của Unity mà không cần thay đổi trong code.
Đoạn code ví dụ dưới đây khai báo một biến công khai có tên myName. Khi bạn đặt component này lên một GameObject trong Scene, biến sẽ hiển thị trong Inspector của component đó.
using UnityEngine;
using System.Collections;
public class MainPlayer : MonoBehaviour
{
public string myName = "none";
// Use this for initialization
void Start ()
{
Debug.Log("I am alive and my name is " + myName);
}
}
Trong Inspector, nếu bạn chỉnh sửa giá trị My Name và nhấn Play, thông báo trên console bây giờ sẽ thay đổi theo tên bạn nhập.
Trong C#, cách đơn giản nhất để một biến có thể chỉnh sửa được trong Inspector là khai báo nó ở chế độ public. Nếu bạn muốn tạo trường private có thể chỉnh sửa trong Inspector, bạn có thể sử dụng thuộc tính SerializeField. Ngược lại, bạn có thể sử dụng thuộc tính HideInInspector để ngăn biến public hiển thị trong Inspector.
Một số class quan trọng cần biết trong Unity
Phần này cung cấp thông tin tổng quan về một số class sẵn có quan trọng và được sử dụng phổ biến nhất trong Unity mà bạn có thể muốn sử dụng khi lập trình.
GameObject: Định nghĩa những đối tượng có thể tồn tại trong Scene của Unity để lập trình viên và người chơi có thể tương tác trực tiếp trong quá trình làm game và chơi game.
- MonoBehaviour: Bạn cần kế thừa class này nếu muốn class của bạn có thể gắn vào GameObject.
- Transform: Cung cấp nhiều chức năng để tương tác với vị trí, góc xoay, tỷ lệ scale, quan hệ cha con của GameObject.
- Quaternion: Cung cấp chức năng liên quan đến góc xoay của GameObject trong không gian.
- ScriptableObject: Dùng để tạo một file chứa dữ liệu trong game.
- Time: Cho phép đo đạc thời gian game đã chạy và điều khiển tốc độ trong game.
- Mathf: Cung cấp các hàm toán học thường sử dụng như sin, cos, logarithm,…
- Random: Cho phép tạo ra các giá trị ngẫu nhiên trong game.
- Debug: Giúp bạn hiển thị thông tin trong game ra ngoài Editor thông qua text trên Console hoặc hình vẽ trên Scene.
Tổng kết
Class là một trong những thành phần quan trọng nhất trong lập trình hướng đối tượng mà bạn cần nắm vững. Bài viết trên đây đã giới thiệu sơ lược cách để bạn tạo đối tượng trong Unity với C#. Hy vọng bạn đã có thể tự tạo class của riêng mình để xây dựng con game mà bạn hằng mơ ước.
Nếu bạn muốn tiếp cận với Game Unity một cách bài bản, khóa học lập trình Game Unity tại CodeGym là lựa chọn hoàn hảo cho bạn. Khóa học cung cấp kiến thức từ cơ bản đến nâng cao, giúp bạn nắm vững các kỹ năng phát triển game trên nền tảng Unity.
0 Lời bình