Prefab hình khối
Assets/
Scenes/
Arena.unity
Prefabs/
Materials/
đã có sẵnbài này thêm
Prefab là một GameObject đã được lưu lại, bạn nhân ra bao nhiêu bản cũng được. Sửa bản gốc thì mọi bản sao trong mọi cảnh tự đổi theo.
Một prefab trong cửa sổ Project, nhiều bản sao trong cảnh.
Tạo prefab hình khối
- 1
. Reset Transform, đặt Position là 0, 0.5, 0.
- 2
Vì sao 0.5? Cube mặc định cao 1 mét, tâm nằm ở giữa, nên phải nâng lên nửa mét mới đứng đúng trên sàn.
- 3
Tạo material M_Block, chọn màu, kéo thả lên cube.
- 4
Kéo cube từ Hierarchy vào thư mục Assets/Prefabs bạn đã tạo ở bài 05. Tên chuyển sang màu xanh — nó đã thành prefab.
- 5
Làm tương tự với Sphere, Capsule và Cylinder. Bốn prefab khối là đủ dùng.
Sửa prefab
✓ Edit the prefab asset
Sửa chính prefab
✖ Edit one instance
Sửa một bản sao
Trong Inspector, menu thả xuống Overrides cho biết bạn đã đổi gì. Apply đẩy ngược lên prefab; Revert bỏ thay đổi đi.
Chuột phải prefab → Create → Prefab Variant khi muốn một phiên bản kế thừa nhưng khác chút (cube đỏ từ cube xám).
Hít lưới khi đặt vật thể
Giữ Ctrl (Windows) / Cmd (Mac) khi kéo để vật di chuyển theo bước cố định.
Chỉnh bước nhảy ở — 1 mét là hợp lý khi xếp khối.
Giữ V để bắt một đỉnh và dán chính xác vào đỉnh của vật thể khác.
Tham chiếu prefab từ code
using UnityEngine;
public class Spawner : MonoBehaviour
{
[SerializeField] private GameObject blockPrefab; // kéo P_Cube vào đây
void Start()
{
//(prefab, vị trí, góc xoay)
Instantiate(blockPrefab, new Vector3(2f, 0.5f, 3f), Quaternion.identity);
}
}Quaternion.identity nghĩa là không xoay. Đó là cách Unity viết góc 0, 0, 0.
Kéo prefab từ Project (không phải từ Hierarchy) vào ô đó trong Inspector.
Lỗi hay gặp
Tên không đổi sang màu xanh: bạn nhân đôi cube bằng Ctrl+D thay vì kéo nó vào Assets/Prefabs. Bản nhân đôi là một object thứ hai trong cảnh, không phải asset. Chỉ thao tác kéo vào cửa sổ Project mới tạo ra prefab.
Bạn đổi màu cube trong cảnh mà chín mươi chín cái kia vẫn xám: thay đổi đó là override trên một bản sao. Mở menu Overrides rồi Apply All, hoặc sửa thẳng asset trong chế độ prefab.
Kéo bản sao trong cảnh vào ô Inspector thay vì asset thì chạy được cho tới lúc không chạy nữa: Instantiate nhân bản chính bản sao đó kèm override, và tham chiếu là null ở mọi scene khác. Luôn kéo từ cửa sổ Project.