using System.Collections.Generic; using UnityEngine; [CreateAssetMenu(fileName = "SettingGroup", menuName = "Создание настроек/Создать группу настроек")] public class SettingsGroup : ScriptableObject { public string Name; public string IconPath; public List Settings; public SettingsGroupDTO GetDTO() { SettingsGroupDTO dto = new SettingsGroupDTO(); dto.Name = this.Name; dto.IconPath = this.IconPath; // Конвертируем список Setting в DTO dto.Settings = new List(); if (this.Settings != null) { foreach (var setting in this.Settings) { if (setting != null) { dto.Settings.Add(setting.GetDTO()); } } } return dto; } public static SettingsGroup FromDTO(SettingsGroupDTO dto) { SettingsGroup group = CreateInstance(); dto.ApplyTo(group); return group; } } [System.Serializable] public class SettingsGroupDTO { public string Name; public string IconPath; public List Settings; // Метод для восстановления из DTO в SettingsGroup public void ApplyTo(SettingsGroup group) { group.Name = this.Name; group.Settings = new List(); if (this.Settings != null) { foreach (var settingDTO in this.Settings) { Setting setting = Setting.FromDTO(settingDTO); group.Settings.Add(setting); } } } public string GetStringForHash() { string result = Name+IconPath; if (Settings != null) { foreach (var setting in Settings) { result += setting.GetStringForHash(); } } return result; } }