This commit is contained in:
jze9
2026-04-15 02:56:11 +05:00
parent 523bf475ca
commit 0837589fa2
1786 changed files with 236305 additions and 73082 deletions

View File

@@ -0,0 +1,113 @@
using UnityEngine;
using System.Collections.Generic;
/// <summary>
/// Пример конфигурации предметов
/// </summary>
public class InventoryExampleItems : MonoBehaviour
{
[Header("Item Database")]
public List<ItemData> items;
void Awake()
{
// Создаём примеры предметов если база пустая
if (items == null || items.Count == 0)
{
items = CreateExampleItems();
}
// Передаём в InventoryManager
var im = FindObjectOfType<InventoryManager>();
if (im != null)
{
im.itemDatabase = items;
im.RebuildItemDictionary();
// Сразу добавляем тестовые предметы
im.AddItem("stone", 32);
im.AddItem("dirt", 16);
im.AddItem("wood", 8);
im.AddItem("apple", 5);
im.AddItem("sword", 1);
im.AddItem("pickaxe", 1);
Debug.Log("[InventoryExampleItems] Added test items");
}
}
List<ItemData> CreateExampleItems()
{
return new List<ItemData>
{
CreateItem("stone", "Камень", "Обычный камень", ItemType.Block, 64),
CreateItem("dirt", "Земля", "Блок земли", ItemType.Block, 64),
CreateItem("wood", "Дерево", "Деревянный блок", ItemType.Block, 64),
CreateItem("plank", "Доски", "Деревянные доски", ItemType.Block, 64),
CreateItem("sword", "Меч", "Острый меч", ItemType.Weapon, 1),
CreateItem("apple", "Яблоко", "Вкусное яблоко", ItemType.Consumable, 16),
CreateItem("pickaxe", "Кирка", "Инструмент для добычи", ItemType.Tool, 1),
};
}
ItemData CreateItem(string id, string name, string desc, ItemType type, int stack)
{
var item = ScriptableObject.CreateInstance<ItemData>();
item.id = id;
item.itemName = name;
item.description = desc;
item.type = type;
item.maxStack = stack;
item.icon = CreatePlaceholderIcon(name);
return item;
}
Sprite CreatePlaceholderIcon(string text)
{
// Создаём текстуру с текстом
var tex = new Texture2D(64, 64);
var colors = new Color[64 * 64];
// Заливаем цветом (серый фон)
for (int i = 0; i < colors.Length; i++)
{
colors[i] = new Color(0.5f, 0.5f, 0.5f, 1f);
}
tex.SetPixels(colors);
tex.Apply();
// Создаём спрайт
return Sprite.Create(tex, new Rect(0, 0, 64, 64), new Vector2(0.5f, 0.5f));
}
}
/// <summary>
/// Добавляет предметы в инвентарь при старте (для тестирования)
/// </summary>
public class InventoryTester : MonoBehaviour
{
void Start()
{
// Ждём кадр чтобы InventoryManager точно инициализировался
StartCoroutine(AddTestItems());
}
System.Collections.IEnumerator AddTestItems()
{
yield return null; // ждём один кадр
// Добавляем тестовые предметы
var im = InventoryManager.Instance;
if (im != null && im.GetItemCount("stone") == 0) // только если пусто
{
Debug.Log("[InventoryTester] Adding test items...");
im.AddItem("stone", 32);
im.AddItem("dirt", 16);
im.AddItem("wood", 8);
im.AddItem("apple", 5);
im.AddItem("sword", 1);
im.AddItem("pickaxe", 1);
}
}
}