04. Quản Lý Vật Liệu (Materials)
Khi làm việc với các đối tượng 3D thông thường trong Godot, bạn có thể dễ dàng thay đổi vẻ ngoài của vật thể bằng cách thiết lập Material Override hoặc Surface Material Override trong bảng Inspector của node MeshInstance3D.
Tuy nhiên, đối với hệ thống GridMap và quá trình xuất MeshLibrary, quy tắc xử lý vật liệu lại có sự khác biệt rất quan trọng mà nhiều nhà phát triển thường bỏ quên.
❗ Quy tắc cốt lõi về vật liệu trong MeshLibrary
Khi xuất một scene sang định dạng MeshLibrary, Godot chỉ đọc các vật liệu (Materials) nằm trực tiếp bên trong tài nguyên Mesh gốc (Mesh.material).
Mọi vật liệu được cấu hình ghi đè ở cấp độ MeshInstance3D (như GeometryInstance3D > Material Override hoặc Surface Material Override) sẽ hoàn toàn bị bỏ qua và không được xuất!
🎨 Cách gán vật liệu đúng chuẩn
Để đảm bảo màu sắc và chất liệu của các ô khối được hiển thị chính xác khi vẽ trên GridMap:
- Chọn node
MeshInstance3Dtrong scene nguồnmesh_library_source.tscn. - Trong bảng Inspector, nhấp trực tiếp vào tài nguyên Mesh (ví dụ:
BoxMesh,ArrayMesh...). - Mở rộng mục Material (Vật liệu) hoặc các rãnh Surface Materials bên trong chính tài nguyên Mesh đó.
- Gán tài nguyên
StandardMaterial3DhoặcORMMaterial3Dcủa bạn vào đây.
Bằng cách này, vật liệu đã được gắn chặt chẽ vào dữ liệu hình học gốc của mô hình và chắc chắn sẽ được mang theo khi xuất sang file MeshLibrary.tres.
💡 Mẹo tái sử dụng vật liệu (Material Atlas)
Để màn chơi của bạn chạy mượt mà nhất có thể:
- Hãy sử dụng chung một tập tin vật liệu (.tres) hoặc một bảng màu Texture Atlas cho nhiều khối gạch khác nhau trong cùng một thư viện lưới.
- Việc dùng chung vật liệu giúp bộ gom nhóm (Batching) của Godot kết hợp các ô lại hiệu quả hơn, giảm thiểu số lượng State Changes và Draw Calls của GPU.