using NUnit.Framework; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; //Для экрана public class SettingGroupView : MonoBehaviour { [Header("Layout ссылки")] [SerializeField] private TextMeshProUGUI TitleLabel; [SerializeField] private Image IconImage; [SerializeField] private RectTransform SettingsContainer; [Header("Параметры Layout'а")] [SerializeField] private float TitleHeight = 70; [SerializeField] private float SettingHeight = 50; [SerializeField] private float Spacing = 20; [Header("Перфабы")] [SerializeField] private SettingView SettingViewPrefab; public List GeneratedSettingViews { get; private set; } public void Generate(SettingsGroup group) { this.name = group.name + " (group)"; TitleLabel.text = group.Name; IconImage.sprite = group.Icon; GeneratedSettingViews = new(); foreach (var setting in group.Settings) { var go = Instantiate(SettingViewPrefab.gameObject, SettingsContainer); var settingView = go.GetComponent(); settingView.Generate(setting); GeneratedSettingViews.Add(settingView); } SetSizesAndPositions(group); } private void SetSizesAndPositions(SettingsGroup group) { var thisRect = GetComponent(); //Настройка иконки IconImage.rectTransform.sizeDelta = new Vector2(TitleHeight, TitleHeight); //Настройка заголовка var titleWidth = thisRect.sizeDelta.x - TitleHeight - Spacing * 2; TitleLabel.rectTransform.sizeDelta = new Vector2(titleWidth, TitleHeight); TitleLabel.rectTransform.anchoredPosition = new Vector2(2*Spacing + TitleHeight, -Spacing); //Настройка контейнера настроек float settingsContainerHeight = group.Settings.Count * (SettingHeight + Spacing) - Spacing; SettingsContainer.sizeDelta = new Vector2(thisRect.sizeDelta.x - 2*Spacing, settingsContainerHeight); SettingsContainer.anchoredPosition = new Vector2(Spacing, -TitleHeight - 2 *Spacing); //Настройка родиткльского контейнера thisRect.sizeDelta = new Vector2(thisRect.sizeDelta.x, TitleHeight + SettingsContainer.sizeDelta.y + 2 * Spacing); } }