02.09.2026 2 мин чтения Просмотров:10

Как написать систему инвентаря в Unity на C#

Система инвентаря — важный элемент многих игр. В этой статье мы рассмотрим, как реализовать её в Unity на языке C#.

Как написать систему инвентаря в Unity на C#

Введение

Создание системы инвентаря — это распространённая задача для разработчиков игр. В этой статье мы разберём, как создать простую, но эффективную систему инвентаря в Unity на языке C#. Мы рассмотрим ключевые моменты, такие как создание классов, управление элементами инвентаря и взаимодействие с пользователем.

Структура проекта

Для начала нам потребуется создать несколько классов:

  • Item — класс для представления предмета.
  • Inventory — класс для управления инвентарём.
  • InventoryUI — класс для отображения инвентаря на экране.

1. Класс Item

Начнём с создания класса Item.

public class Item {
    public string itemName;
    public int itemID;
    public Sprite itemIcon;

    public Item(string name, int id, Sprite icon) {
        itemName = name;
        itemID = id;
        itemIcon = icon;
    }
}

Здесь мы определяем основные свойства предмета: имя, идентификатор и иконка.

2. Класс Inventory

Теперь создадим класс Inventory, который будет управлять списком предметов.

using System.Collections.Generic;

public class Inventory {
    private List items = new List();

    public void AddItem(Item item) {
        items.Add(item);
    }

    public void RemoveItem(Item item) {
        items.Remove(item);
    }

    public List GetItems() {
        return items;
    }
}

Этот класс позволяет добавлять и удалять предметы из инвентаря, а также получать список всех предметов.

3. Класс InventoryUI

Для отображения инвентаря на экране создадим класс InventoryUI. Для простоты мы будем использовать UnityEngine.UI.

using UnityEngine;
using UnityEngine.UI;

public class InventoryUI : MonoBehaviour {
    public GameObject itemPrefab;
    public Transform itemsParent;
    private Inventory inventory;

    public void Setup(Inventory inv) {
        inventory = inv;
        UpdateUI();
    }

    public void UpdateUI() {
        foreach (Transform child in itemsParent) {
            Destroy(child.gameObject);
        }

        foreach (Item item in inventory.GetItems()) {
            GameObject newItem = Instantiate(itemPrefab, itemsParent);
            newItem.GetComponent().sprite = item.itemIcon;
        }
    }
}

Этот класс отвечает за создание и обновление UI-элементов инвентаря на экране.

Интеграция системы в игру

Теперь мы можем интегрировать нашу систему инвентаря в игру. В вашем игровом компоненте добавьте следующий код:

public class Game : MonoBehaviour {
    private Inventory inventory;
    public InventoryUI inventoryUI;

    void Start() {
        inventory = new Inventory();
        inventoryUI.Setup(inventory);

        // Пример добавления предметов
        Item potion = new Item("Health Potion", 1, potionIcon);
        inventory.AddItem(potion);
        inventoryUI.UpdateUI();
    }
}

Обратите внимание, что мы создаём инвентарь и связываем его с UI.

Заключение

Теперь у вас есть простая система инвентаря, которую можно расширять в зависимости от потребностей вашей игры. Вы можете добавить такие функции, как сортировка, фильтрация и управление количеством предметов.

Не забывайте, что инвентарь — это основа многих игровых механик. Рассмотрите возможность использования ассетов, таких как Inventory 2 | Game Creator 2, для более сложных систем.

Для дальнейшего изучения тем, связанных с разработкой игр в Unity, обратите внимание на статьи о Object Pooling и Multiplayer в Unity.

Комментарии

Чтобы оставить комментарий, войдите в аккаунт.

Пока нет комментариев. Будьте первым!

Смотрите также

Flow Field в Unity: путь для сотен юнитов одновременно
03.10.2026

Flow Field в Unity: путь для сотен юнитов одновременно

Flow Field решает задачу массового наведения толпы там, где A* начинает тормозить и распухать по памяти. Разбираем поле стоимостей, интеграционное поле и векторное поле, а также их практическую реализацию в Unity.