Zitga cân bằng game sử dụng csv:
GD làm việc với các file csv

Dev đọc dữ liệu từ csv và điền vào các file Scriptable Object

Quá trình trên là 1 cực hình với dev: lặp lại, nhàm chán, tốn thời gian, code lặp, … (có hàng trăm csv cho 1 dự án).
public void ParseData(List<Dictionary<string, string>> shopGrowthDataParsed)
{
var rowOne = shopGrowthDataParsed[0];
id = UtilityGame.ParseInt(rowOne, ShopConstants.ID_TAG);
price = UtilityGame.ParseFloat(rowOne, ShopConstants.PRICE_TAG);
originPrice = UtilityGame.ParseFloat(rowOne, ShopConstants.ORIGIN_PRICE_TAG);
//...
}
⇒ Nếu có thể giảm thiểu được các công việc chân tay này là 1 điều tuyệt vời.
<aside> 💡 Giải quyết công việc nhạt nhẽo nhất: Parse Data tự động, ko phát sinh thêm code.
</aside>
Link package: https://github.com/Zitga-Tech/ZBase.Csv-Reader
// Package Manager -> Add(+)
https://github.com/Zitga-Tech/ZBase.Csv-Reader.git?path=/Packages/ZBase.CsvReader
Odin package:
Import trực tiếp hoặc install từ Package Manager
Nếu dùng file tgz của Zitga thì


Hoặc bạn có thể giải nén và copy thư mục Sirenix vào Assets/Plugins/

Mở popup Set up
Menu → Tools → Csv-Reader

Kết quả

Giải thích:
Popup chia thành 2 khu vực:
Tab Home
Root project: Absolute Path đến folder root của dự án.
Trong ảnh đang mở project của package Csv-Reader
Assembly Name:

Tool Config Path: Folder chứa các config cho công cụ vận hành được. Gồm có:
CsvConfig.asset
CsvDataController.asset
Data

Csv Config Path: Folder chứa cấu hình mapping các file csv và class code của bạn
Csv Path: Folder chứa Csv
Scriptable Object Path: Folder chứa Scriptable Object khi được tạo ra bởi tool
Note: Hai trường Csv Path và Scriptable Object Path cần được cài đặt trước khi vận hành tool.

Filter Namespace
Đây là 1 optional, giúp cho gợi ý lựa chọn class mapping vs csv nhanh hơn.
Khi disabled hoặc danh sách rỗng thì tính năng sẽ không hoạt động

Tab Csv Info
Data (Read Only)
Tự động cập nhật các file Scriptable Object trong folder Csv Config Path được tạo từ CsvData.cs. Mang ý nghĩa thông tin là chủ yếu
Create new csv data
Tạo file config cho các csv mới 1 cách nhanh chóng
Nhập tên → Nhấn “Create New”. Ngay lập tức file config mới cũng sẽ được hiển thị trên danh sách Data

Tab Csv Config
Gồm nhiều sub-tab. Mỗi tab là 1 file config, thường sẽ đại diện cho một tính năng. Giúp cho config trở nên trực quan và khi tính năng không tồn tại có thể xóa bỏ 1 cách dễ dàng. Ví dụ: Hero, Campaign, PVP, Quest, …

Các bước để config

Vào tab Csv Info → Create new config.
Ví dụ: Quest

Chuyển sang tab Csv Config → Quest
Điền các vị trí bắt buộc.
Note:
Có thể lựa chọn nhanh và chuẩn xác bằng cách chọn vào dấu 3 chấm

Có thể set up nhiều csv cho 1 Class Data. Check samples Csv.AbilityDataConfig

Chọn file csv hoặc folder chứa file csv nhấn Reimport để tool tự động tạo ScriptableObject và điền dữ liệu từ Csv vào.

bạn có thể xem trực tiếp các case bằng cách đọc repo nhé
SerializedScriptableObject của OdinHeroLevelRewardConvert() để chuyển từ Array sang Dictionary[NonSerialized] [OdinSerialize] vào dictionary attribute.<aside> 💡 Đây là Extension dành cho dự quán thao tác và làm việc bằng Google Sheet
</aside>