Верстак для крафта
Часть раздела Архитектура игр в Unity путешествия по Unity на Coddy. Урок 62 из 64.
В игре на выживание верстак превращает собранные вами ресурсы в полезные предметы. Две кнопки собирают дерево и камень, а три рецепта превращают их в нечто большее: из двух единиц дерева получается доска, из доски и двух единиц камня — топор, а из четырёх досок — плот. Кнопку рецепта можно нажать, только если в инвентаре есть всё необходимое для его создания, а при создании предмета эти ресурсы расходуются. Рецепты — это данные, которые заполняются на верстаке в Inspector, поэтому для добавления нового рецепта не нужен новый код. Инвентарь сообщает обо всех изменениях всем, кто на него подписан, и каждый раз при изменении сохраняется в формате JSON, поэтому после выхода из игры ничего не теряется.
Для создания этого проекта нужны два урока. В этом уроке мы напишем Inventory для Backpack; рецепты верстака будут в следующем уроке.
Задание
СложноЧасть 1: заполни Inventory; сбор ресурсов готов.
- Добавь сериализуемые
ItemStack(публичныеitem,count) иInventoryData(публичныйList<ItemStack> stacks). - Заполни
Count,Add,Remove(стек удаляется при значении 0) иDescribe:Wood 3, Plank 1илиempty. - При каждом изменении сохраняй данные в
inventory.jsonвApplication.persistentDataPathи вызывай событиеChanged;Awakeзагружает эти данные.
Нажми «Играть», собери ресурсы, а затем сыграй ещё раз: древесина вернулась. Затем нажми «Проверить».
Попробуйте сами
using System;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
// Здесь размещаются ItemStack и InventoryData
public class Inventory : MonoBehaviour
{
public event Action Changed;
void Awake()
{
// Загрузить inventory.json, если файл существует
}
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";
}
}
Все уроки раздела Архитектура игр в Unity
1Компоненты, а не иерархии
Небольшие компонентыБазовый скрипт врагаАбстрактные компонентыКомпоненты работают вместеПовторение: модульная турельПовторение: спаренная пушка4Сериализованные данные
Сериализуемые классыСписки в инспектореПеречисления в инспектореПовторение: таблица добычиПовторение: определяем добычу2Интерфейсы в Unity
IDamageableИнтерфейсы и TryGetComponentGetComponentsПовторение: клавиша взаимодействияПовторение: ближайший в пределах досягаемости5ScriptableObjects
Ресурсы данныхХарактеристики оружияОбщие настройкиСохраняем ветерВолны как данныеПовторение: база предметовПовторение: покупка в магазинеПотренируйтесь самостоятельно: Песочница Unity