52 lines
2.6 KiB
C#
52 lines
2.6 KiB
C#
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 FurnitureController 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));
|
||
}
|
||
}
|
||
} |