SummerGame/Assets/Scripts/ShopManager.cs

52 lines
2.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; // Обязательно добавляем для работы с интерфейсом
// Этот класс - наша "карточка товара". Он хранит иконку и 3D-модель.
[System.Serializable] // Позволяет отображать этот класс в инспекторе Unity
public class FurnitureItem
{
public string itemName; // Название (просто для вашего удобства в инспекторе)
public Sprite icon; // Иконка для магазина
public GameObject prefab; // 3D-модель для установки
}
public class ShopManager : MonoBehaviour
{
[Header("Связи")]
public FurnitureBuilder builder; // Ссылка на ваш скрипт строительства
public GameObject buttonTemplate; // Наш префаб кнопки магазина
public Transform contentPanel; // Тот самый объект Content с Grid Layout Group
[Header("Каталог мебели")]
public List<FurnitureItem> items; // Список всей мебели в игре
void Start()
{
// Как только игра запускается, генерируем магазин
GenerateShop();
}
void GenerateShop()
{
// Проходимся по каждому предмету в нашем каталоге
foreach (FurnitureItem item in items)
{
// 1. Создаем копию шаблона кнопки внутри панели Content
GameObject newButton = Instantiate(buttonTemplate, contentPanel);
// 2. Находим компонент Image на этой кнопке и меняем картинку на нашу иконку
newButton.GetComponent<Image>().sprite = item.icon;
// 3. Находим компонент Button, чтобы настроить клик
Button btn = newButton.GetComponent<Button>();
// Сохраняем префаб в локальную переменную (это важно для правильной работы кода)
GameObject prefabToSelect = item.prefab;
// 4. Программно добавляем действие при клике (то же самое, что плюсик в инспекторе)
// Мы вызываем метод из вашего прошлого скрипта!
btn.onClick.AddListener(() => builder.SelectFurnitureAndCloseShop(prefabToSelect));
}
}
}