Bàn chế tạo
Thuộc phần Kiến trúc trò chơi trong Unity trong hành trình Unity của Coddy. Bài học 62 trên 64.
Trong trò chơi sinh tồn, bàn chế tạo biến những thứ bạn thu thập thành vật phẩm có thể sử dụng. Hai nút giúp bạn thu thập gỗ và đá, còn ba công thức chế tạo biến chúng thành những thứ hữu ích hơn: hai gỗ tạo thành một tấm ván, một tấm ván và hai viên đá tạo thành một chiếc rìu, bốn tấm ván tạo thành một chiếc bè. Bạn chỉ có thể nhấn nút của một công thức khi kho đồ có đủ mọi thứ cần dùng, và việc chế tạo sẽ tiêu hao những thứ đó. Dữ liệu về các công thức được điền vào bàn chế tạo trong Inspector, nên bạn không cần viết code mới để thêm công thức. Kho đồ thông báo mỗi khi có thay đổi cho những ai đang lắng nghe, đồng thời được lưu dưới dạng JSON mỗi khi thay đổi, nên bạn sẽ không mất gì khi thoát trò chơi.
Hai bài học sẽ giúp bạn tạo tính năng này. Bài học này viết Inventory trên Backpack; tiếp theo là các công thức của bàn chế tạo.
Thử thách
KhóPhần 1: hoàn thiện Inventory; tính năng thu thập đã sẵn sàng.
- Thêm
ItemStackcó thể tuần tự hóa (item,countcông khai) vàInventoryData(List<ItemStack> stackscông khai). - Hoàn thiện
Count,Add,Remove(ngăn xếp sẽ bị xóa khi số lượng về 0) vàDescribe:Wood 3, Plank 1hoặcempty. - Mỗi thay đổi đều lưu
inventory.jsontrongApplication.persistentDataPathvà phát sự kiệnChanged;Awaketải dữ liệu đó.
Nhấn Chơi, thu thập, rồi chơi lại: gỗ đã quay trở lại. Sau đó nhấn Kiểm tra.
Tự làm thử
using System;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
// Đặt ItemStack và InventoryData ở đây
public class Inventory : MonoBehaviour
{
public event Action Changed;
void Awake()
{
// Tải inventory.json nếu tệp tồn tại
}
public int Count(string item)
{
return 0;
}
public void Add(string item, int amount)
{
}
public void Remove(string item, int amount)
{
}
public string Describe()
{
return "empty";
}
}
Tất cả bài học trong Kiến trúc trò chơi trong Unity
1Thành phần, không phải hệ thống phân cấp
Thành phần nhỏTập lệnh kẻ địch cơ sởThành phần trừu tượngCác thành phần phối hợp với nhauÔn tập: tháp pháo mô-đunÔn tập: pháo nòng đôi4Dữ liệu tuần tự hóa
Lớp có thể tuần tự hóaDanh sách trong InspectorKiểu liệt kê trong InspectorÔn tập: Bảng vật phẩm rơiÔn tập: Quay vật phẩm2Giao diện trong Unity
IDamageableGiao diện và TryGetComponentGetComponentsÔn tập: phím tương tácÔn tập: đối tượng gần nhất trong tầm với5ScriptableObjects
Tài sản dữ liệuChỉ số vũ khíCài đặt dùng chungLưu gióSóng dưới dạng dữ liệuÔn tập: Cơ sở dữ liệu vật phẩmÔn tập: Mua hàng từ cửa hàng8Code có thể tái sử dụng
Phương thức mở rộngSingleton tổng quátCác hàm hỗ trợ tổng quátÔn tập: FindNearest3Sự kiện
Sự kiện C# trong UnityĐăng ký trong OnEnableCác trường UnityEventSự kiện điều khiển UIÔn tập: Cửa sổ bật lên thành tíchÔn tập: Bộ hẹn giờ cửa sổ bật lên6Lưu dữ liệu bằng JSON
JsonUtilityLưu trò chơiTải dữ liệu và giá trị mặc địnhÔn tập: các ô lưuChọn và xóa một ô lưu9Tái sử dụng đối tượng bằng pool
Vì sao cần pool đối tượngPool dùng hàng đợiObjectPool của UnityÔn tập: pool đạnTự luyện tập: Playground Unity