fack
This commit is contained in:
113
Assets/Inventory/Scripts/InventoryExampleItems.cs
Normal file
113
Assets/Inventory/Scripts/InventoryExampleItems.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user