Cập Nhật Dev Log 22 - Cải Tiến Trình Nhập Dữ Liệu
Ngày 18–19 tháng 9 năm 2025
Cột mốc: Phoenix Reset — Khôi phục logic kéo thả, Tinh chỉnh HUD
✅ Sửa Chữa Cốt Lõi
- Hoàn thiện và kiểm tra logic kéo và thả trên tất cả các bảng hàng tồn kho (các bảng thiết bị giờ đây hoạt động thông qua phương pháp nhấp chuột).
- Khôi phục tương tác
InventoryItemInteractioncho prefab để tuân thủ và tương tác thời gian thực. - Cập nhật
InventorySlotUIđể khởi tạo lại các mục đã thả với đầy đủ logic kéo/chọn. - Mở rộng
PlayerHUD(trước đây rất hạn chế) để bao gồm các trường văn bản và khu vực cho tất cả các sprite HUD: biểu tượng tình trạng, sức khỏe, sức bền, mức độ máu, loại máu, v.v. - Tinh chỉnh các trường HUD thành các container UI với các sprite có thể thay thế.
- Đồng bộ hóa
EnvironmentalPlayerStatsCalculatorvàGameSceneManagervới chữ ký HUD mới. - Thêm các accessor
BloodLevelvàBloodTypevàoPlayerStats(setters giới hạn, giá trị mặc định an toàn cho prefab).
🧠 Ghi Chú Thiết Kế
- Hệ thống tình trạng hiện hỗ trợ phản hồi văn bản + biểu tượng kép.
- Hệ thống máu đã chuẩn bị cho logic phân hủy, truyền máu và chấn thương.
- Tất cả các hệ thống đều an toàn cho prefab, tuân thủ thời gian thực và sẵn sàng cho việc mở rộng trong tương lai.
🧪 Bước Tiếp Theo (Tạm Hoãn)
- Kết nối logic phân hủy mức độ máu và truyền máu.
- Mở rộng các lớp phủ độ nghiêm trọng của tình trạng và tô màu biểu tượng.
- Tự động làm mờ các biểu tượng HUD khi các tình trạng được xóa.
- Tinh chỉnh các vòng lặp phân hủy chỉ số liên kết với môi trường và thời gian.
🧱 Cột Mốc: Hoàn Thiện Kho Lỏng
- Tôi đã bỏ qua các mục/thùng chứa lỏng ngoài các loại nấu ăn/thực phẩm (chúng đã được nhóm với các trạng thái lỏng môi trường). Để giải quyết vấn đề này, tôi đã chia cơ sở dữ liệu thành hai phần, chuyển đổi các mục lỏng (loại hàng tồn kho) thành JSON và nhập chúng qua
LiquidItemImporter.cs. Tôi đã tạoLiquidItem.csđể lưu trữ dữ liệu, sau đó tạo các tệp.assetcho tất cả các mục. - Mục tiêu: Hoàn thiện và đảm bảo tính an toàn cho prefab của toàn bộ kho JSON các mục lỏng để nhập thời gian thực qua
JsonUtilitycủa Unity. Đảm bảo tất cả các mục đều hợp lệ về cấu trúc, sẵn sàng cho sprite, an toàn cho slot và có thể mở rộng.
✅ Các Nhiệm Vụ Đã Hoàn Thành
- Sửa Định Dạng → Đóng gói lại tất cả các mục bên trong
{ "items": \[...\] }để thỏa mãn trình phân tích của Unity. - Tiêm Trường An Toàn Cho Prefab → Áp dụng các trường nhất quán:
spritePath,isReusable,isFillable,isStackable,maxStackSize,slotWidth,slotHeight,canBeBoiledForPurification,usedInCookingLiquid, v.v. - Đảm Bảo Tính Chính Xác Của Câu Chuyện → Bảo tồn ID, tên hiển thị, giá trị hydrat hóa, hồ sơ độc tính và các biến thể thương hiệu (Gremlin XP, Fecks, Sipsi, v.v.).
- Chuyển Đổi Thủ Công → Chuyển đổi các khối
C# LiquidEntrythành JSON, loại bỏ hậu tố float (1f → 1.0), và làm sạch dấu phẩy thừa.
🧨 Vấn Đề
- Unity không thể phân tích mảng thô.
- Suy giảm độ tin cậy từ sự không phù hợp về định dạng trước đó.
- Kiểm tra thủ công làm chậm tiến độ và gây mệt mỏi.
🧠 Bài Học
- Tự động hóa các chuyển đổi trong tương lai thông qua công cụ/đường ống biên tập viên.
- Cân nhắc việc tự động gán sprite và tiêm câu chuyện hydrat hóa.
- Xác thực logic dấu chân slot qua kho.
- Có thể tái cấu trúc
LiquidType enumđể hỗ trợ lớp con.
Trạng thái: ✅ Kho đã hoàn thành | 🟡 Đường dẫn sprite đang chờ | 🟡 Thẻ câu chuyện là tùy chọn | 🟢 Sẵn sàng cho nhập thời gian thực
🧱 Cột Mốc: Trình Nhập Chung (Thẻ: Elephant)
🔧 Những Gì Đã Được Xây Dựng
GeneralItemImporter.cs— trình nhập an toàn cho prefab, định tuyến nội dung cho tất cả các loại mục.- Hỗ trợ Unity + Newtonsoft JSON.
- Đầu ra thư mục phẳng tới
Assets/ItemAssets/ZImportFolder. - Gán sprite thủ công.
- Gán thẻ gỡ lỗi thông qua Elephant.
- Định tuyến thời gian thực theo nội dung mục (không theo tên tệp).
- Phương pháp dự phòng cho các mục bị thiếu/hỏng.
🧪 Mục Kiểm Tra
Tool_MatchesBoxđược định tuyến đúng cách dưới dạngToolItem(hộp diêm).- Chức năng: Đốt cháy, Khởi đầu lửa, Nấu ăn.
isReusable = true,usageCount = 20.- Đường dẫn sprite đã được gán, xác nhận liên kết thủ công.
- Trình nhập tự động bọc các mảng thô, làm sạch tên tệp, tạo cấu trúc thư mục nếu thiếu.
🧠 Sửa Chữa
- Thay thế
FindObjectsOfTypeđã lỗi thời bằngFindObjectsByTypetrongSlotGridNudger. - Cập nhật trình nhập để định tuyến theo nội dung thay vì tên tệp.
- Sửa đổi JSON cho diêm (mô tả, chức năng, cờ).
- Thêm
usageCountcho các vật phẩm tiêu dùng có thể tái sử dụng. - Giải quyết các sự không phù hợp về loại (LiquidItem, MedicalItemAsset).
🧰 Lợi Ích Từ Tính Modular
- Logic định tuyến thông qua
CreateAssetByContent(JObject obj). - Các hook xác thực theo từng loại mục.
- Thẻ gỡ lỗi tiêu chuẩn hóa.
- Đầu ra thư mục phẳng để sắp xếp thủ công.
- Logic khởi đầu lửa có thể mở rộng thông qua chức năng,
usageCount,isReusable.
🎨 Tiến Trình Tài Nguyên & Discord
- Thêm 30 sprite mục mới, liên kết với
ScriptableObjects. - Quy trình đám mây: tạo ngoài máy → tải xuống/sắp xếp → thả vào Unity.
- Bắt đầu tạo một máy chủ Discord mới để sử dụng trong tương lai.
- Liên kết đến tất cả các Dev Logs đã được bao gồm.
- Tạo 10 kênh modular (dev logs, báo cáo lỗi, xem trước tài sản, thả câu chuyện, phản hồi alpha, v.v.).
- Đã tải trước với ảnh chụp màn hình tài sản sớm + ảnh chụp màn hình gameplay Alpha 1.0.
- Máy chủ phản ánh triết lý bất đồng bộ: tách biệt rõ ràng giữa dev/người chơi, onboarding an toàn cho prefab.
- Mã mời sẽ được thêm vào dev log trong tương lai, và có thể được đặt vào hồ sơ dev.to của tôi để bất kỳ ai quan tâm có thể xem tiến trình, đưa ra ý tưởng, hoặc chỉ đơn giản là theo dõi từ xa.
- Tôi sẽ tiếp tục với tiến trình chậm nhưng ổn định.