Начало работы
Добро пожаловать в C4G! Это руководство поможет вам начать управлять конфигурациями вашей игры через Google Sheets.
Что такое C4G?
C4G (Configs for Games) — это готовый к использованию в производстве набор инструментов, который позволяет управлять конфигурациями вашей Unity-игры через Google Sheets. Он автоматически генерирует C# DTO-классы и сериализует ваши конфигурации в JSON, делая управление конфигурацией простым и доступным для непрограммистов.
Требования
Перед началом убедитесь, что у вас есть:
- Unity 2019.4 или новее
- Учетная запись Google для Google Sheets
- Базовое понимание Unity и C#
Установка
Установка Unity-пакета
- Загрузите последний Unity-пакет C4G из GitHub Releases
- Импортируйте пакет в ваш Unity-проект:
Assets → Import Package → Custom Package- Выберите загруженный файл
.unitypackage - Нажмите
Import
Установка .NET Standard пакета
Для автономных .NET проектов установите через NuGet:
dotnet add package C4G
Быстрый старт
1. Настройка Google Sheets API
- Перейдите в Google Cloud Console
- Создайте новый проект или выберите существующий
- Включите Google Sheets API
- Создайте учетные данные (OAuth 2.0 Client ID)
- Загрузите JSON-файл с учетными данными
2. Настройка C4G в Unity
- Откройте окно настроек C4G:
Window → C4G → Settings
- Настройте конфигурацию:
- Google Sheets ID: ID вашей таблицы из URL
- Client Secret: Путь к JSON-файлу с учетными данными
- Generated Code Folder: Куда будут генерироваться C#-классы
- Serialized Configs Folder: Куда будут сохраняться JSON-файлы
3. Создайте свою первую таблицу конфигурации
В вашей Google-таблице создайте лист со следующей структурой:
| FieldName | FieldType | Values |
|---|---|---|
| id | int | 1, 2, 3 |
| name | string | Item1, ... |
| price | float | 10.5, ... |
4. Генерация кода и конфигураций
- Откройте окно C4G:
Window → C4G → Generate - Нажмите
Generate Configs - C4G выполнит:
- Получение данных из Google Sheets
- Генерацию C# DTO-классов
- Сериализацию данных в JSON
5. Использование в вашей игре
using C4G.Runtime;
using UnityEngine;
public class ConfigExample : MonoBehaviour
{
void Start()
{
// Загрузка сгенерированной конфигурации
var config = Resources.Load<TextAsset>("Configs/YourConfig");
var data = JsonUtility.FromJson<YourConfig>(config.text);
Debug.Log($"Загружено {data.items.Length} элементов");
}
}