Unity Editor-скрипты для удобного редактирования рецептов крафта с автодополнением и локализацией.
| Файл | Куда скопировать | Описание |
|---|---|---|
CraftRecipeDrawer.cs |
Assets/Editor/ |
Property Drawer с автодополнением и поддержкой локализации |
CraftRecipeConfig.cs |
Assets/Editor/ |
Конфиг настроек (единый asset на проект) |
ItemCraft.cs |
Любая папка в Assets/ |
Runtime ScriptableObject со списком рецептов |
Папка
Editorобязательна — скрипты в ней не попадают в билд.
- Скопируй
CraftRecipeDrawer.csиCraftRecipeConfig.csвAssets/Editor/ - Скопируй
ItemCraft.csв удобную папку (напримерAssets/Inventory/) - Создай конфиг: Assets → Create → Editor Config → Craft Recipe Config
- Настрой конфиг под свой проект (см. ниже)
- Создай рецепты: Assets → Create → Scriptable Objects → ItemCraft
- Unity 2021.3+
- Класс
ItemStatsDatabase : ScriptableObjectс полемList<ItemData> items - Каждый
ItemDataдолжен иметьstring itemNameKey - (Опционально) CSV-файл локализации с колонками
Lang Code,EN,RU(разделитель — TAB) - Translation system / I18N Plugin / Languages Unity asset
| Поле | По умолчанию | Описание |
|---|---|---|
Lang File Path |
Honeti/I18N/Data/langFile.csv |
Путь к CSV переводов относительно Assets/ |
Search Language Column |
RU |
Столбец языка поиска в CSV (RU, EN, ...) |
| Поле | Описание |
|---|---|
Default Database |
ItemStatsDatabase, который подставляется автоматически в новые рецепты |
| Поле | Описание |
|---|---|
Use Localization |
Включить поиск по локализованным названиям. Если false — показывает обычное текстовое поле |
Show Database Per Recipe |
Показывать поле Database в каждом рецепте/ингредиенте. Если false — используется Default Database автоматически |
Auto Assign Database |
Авто-подставлять Default Database при открытии ItemCraft asset'а |
Менять только если переименовали поля в CraftRecipe / Ingredient без обновления скриптов.
Lang Code EN RU
^sword_name Sword Меч
Разделитель — TAB (
\t). Первая строка — заголовки. Ключи начинаются на^.
// Получить данные результата рецепта
ItemData result = recipe.GetResult();
// Получить данные ингредиента
ItemData ingredient = ing.GetItem();- Другой класс предметов вместо
ItemStatsDatabase— обнови имена полей в конфиге и убедись что класс имеетList<ItemData> itemsсitemNameKey. - Другой язык поиска — смени
Search Language Columnна нужный столбец. - Без локализации — выключи
Use Localizationв конфиге. - Одна база на весь проект — выключи
Show Database Per Recipeи укажиDefault Database. - Переименованные поля — обнови строки в секции "Имена полей" конфига.