Skip to content

Посібник користувача InventorySystemDemo

🇬🇧 English | 🇺🇦 Українська

Дата-керована система інвентаря та спорядження для Unreal Engine 5.7 з повноцінною підтримкою мультиплеєра.

Предмети створюються як Data Assets, геймплей-код викликає один метод, решту робить плагін — включно з мережевою реплікацією.

Версія 1.0 · Runtime · UE 5.7 · Примітки до випуску


Швидкий старт

1. Підключіть плагін. Скопіюйте Plugins/InventorySystemDemo у теку Plugins/ свого проєкту та ввімкніть його: Edit → Plugins → Inventory System.

2. Створіть предмет. Content Browser → правий клік → Miscellaneous → Data Asset → ISItemDefinition. Назвіть DA_HealthPotion, задайте DisplayName, і в полі Fragments додайте:

  • StackableMaxStackSize = 10
  • ConsumableConsumeAmount = 1

Не хочете створювати нічого просто щоб подивитися? Плагін привозить сім готових предметів у InventorySystemDemo Content → Demo → Items (щоб їх було видно, увімкніть Show Plugin Content у налаштуваннях Content Browser). Меч, щит, шолом, смолоскип, зілля, руда й реліквія разом покривають усі п'ять фрагментів.

3. Дайте персонажу інвентар. Blueprint персонажа → Add Component → Inventory.

4. Перевірте. Натисніть Play і відкрийте консоль:

DemoInvGive Potion 5      видати собі 5 зілль
DemoInvOverlay            відкрити інспектор

Готово — предмети видаються, стакуються й використовуються.

З коду те саме:

int32 Remainder = 0;
InventoryComponent->TryAddItem(PotionDefinition, 5, Remainder);

Цей рядок працює і в одиночній грі, і на клієнті мультиплеєра — без жодної гілки HasAuthority() з вашого боку.


Три ідеї, на яких тримається плагін

Якщо читати лише один абзац — читайте цей.

1. Предмет — це набір фрагментів, а не клас. Немає базового класу «зброя» чи «зілля». Меч — це Equippable + Durability, зілля — Stackable + Consumable, смолоскип — усі три одразу: Equippable + Durability + Consumable (тримається в руці, має запас пального й витрачається при використанні). «Усі три» — це три з чотирьох щойно згаданих типів, а не всі фрагменти плагіна: їх усього п'ять (Stackable, Equippable, Consumable, Durability, Weight). Додати здатність = додати фрагмент; код інвентаря при цьому не змінюється.

2. Один API для будь-якого режиму гри. Кожен метод, що змінює стан, називається Try* і викликається звідусіль. В одиночній грі він виконується на місці й не створює RPC узагалі; на клієнті — сам пересилається на сервер.

3. Те, що робить копію унікальною, живе в екземплярі. Меч на 12/100 міцності й новий меч посилаються на той самий ассет, але мають різні значення в екземплярі — і саме тому не об'єднуються в стек.


Кому що читати

Ви Починайте з
Зовсім новачок — хочете побачити результат за 10 хв, а не читати главу за главою Від ассета до руки гравця
Дизайнер, що створює предмети 010304
Геймплей-програміст 0511
Читає код / розширює плагін Архітектура04
UI-програміст 0812
Програміст мультиплеєра 0109
QA / тулінг 13

Щось поводиться дивно? 14 — Поширені запитання містить чеклист «чому не працює».


Розділи

# Розділ Що всередині
Від ассета до руки гравця Історія на 10 хвилин: меч, факел і зілля від Data Asset до руки гравця
Примітки до випуску Що є, що змінилося, чого ще немає
01 Основні поняття Тип і екземпляр, фрагменти, правила стакування, розріджені слоти
02 Підключення Встановлення, Project Settings, де живе інвентар і як його знайти
03 Створення предметів Довідник полів і готові рецепти: зілля, меч, руда, боєприпаси
04 Фрагменти П'ять готових фрагментів, усі хуки, як написати власний
05 Операції з інвентарем Додати, перекласти, використати, відсортувати; фільтри, вага, події
06 Спорядження Слоти як теги, вдягання, візуальні актори, сумарні статистики
07 Лут і предмети у світі Таблиці луту, скрині, предмети на землі, свій контейнер
08 Побудова інтерфейсу Сітка, іконки, тултипи, перетягування, вікно скрині
09 Мультиплеєр Чому той самий код працює в обох режимах; єдиний виняток
10 Збереження ExportState / ImportState, вбудовування у свій save game
11 Рецепти Крафт, торгівля, хотбар, лутання трупа, викидання, ремонт
12 Довідник API Повний перелік публічного API
13 Відлагодження Інспектор, консольні команди, логи, чеклист проблем
14 Поширені запитання Короткі відповіді на часті питання
Архітектура Як плагін влаштований усередині і чому саме так

Домовленості

  • «Тип предмета» — ассет UISDemoItemDefinition. «Екземпляр» — конкретна копія в чиємусь інвентарі (UISDemoItemInstance).
  • Сніпети коду — на C++, якщо не вказано інше. Майже кожна показана функція викликається й з Blueprint; два винятки позначені (лише C++) у 12 — Довідник API і жодної можливості не додають.
  • «Інвентар» означає UISDemoInventoryComponent, «спорядження» — UISDemoEquipmentComponent.