quot;AtlasObject_{obj.name}_{uniqueID}.json"; string filePath = Path.Combine(saveDirectory, fileName); // в какую директорию и под каким именем // Метод сохранения File.WriteAllText(filePath, obj.ToJson()); // откуда записываем, используем метод из JsconObject.cs } } // Этот метод должен работать из сцены Оранжереи public void LoadAndCreateAtlases() // Роется в фолдере и достает данные { if (!Directory.Exists(saveDirectory)) { Debug.Log("No objects were found"); return; } // Получаем Json файлы (их будет несколько) string[] jsonFiles = Directory.GetFiles(saveDirectory, "*.json"); // Получаем по указанной директории файлы с расширением json. Mac может не понять if (jsonFiles.Length == 0) { return; // прерывает метод } foreach (string filePath in jsonFiles) // читаем каждый файл из всего директория { string json = File.ReadAllText(filePath); // Распакуем json для того, чтобы прочесть его тип (жук, стрекозы и пр.) JsonObject temporaryAtlas = new GameObject("temp").AddComponent<JsonObject>(); // создаём временный объект temporaryAtlas.gameObject.tag = "Temporary"; temporaryAtlas.FromJson(json); // присваиваем Debug.Log(temporaryAtlas.enemyType); // Для создание объекта // Для префаба, вместо GameObject newAtlas будет Instantiate из префаба; // можно и с этим, но будет другое решение if (temporaryAtlas.enemyType == "Circle") { GameObject newAtlas = new GameObject(); // альтернатива Instantiate(); но создает только пустой объект без свойств / компонентов JsonObject atlasComponent = newAtlas.AddComponent<JsonObject>(); // Ключевое: присваиваем класс/скрипт с компонентами (но все поля пока на нулях) atlasComponent.FromJson(json); // заполняем данные newAtlas.name = atlasComponent.atlasName; newAtlas.AddComponent<SpriteRenderer>().sprite = circle; } if (temporaryAtlas.enemyType == "Square") { GameObject newAtlas = new GameObject(); // альтернатива Instantiate(); но создает только пустой объект без свойств / компонентов JsonObject atlasComponent = newAtlas.AddComponent<JsonObject>(); // Ключевое: присваиваем класс/скрипт с компонентами (но все поля пока на нулях) atlasComponent.FromJson(json); // заполняем данные newAtlas.name = atlasComponent.atlasName; newAtlas.AddComponent<SpriteRenderer>().sprite = square; } GameObject[] temporaryAtlasGameObj = GameObject.FindGameObjectsWithTag("Temporary"); foreach (GameObject obj in temporaryAtlasGameObj) { Destroy(obj); } } } } ``` **JsonObject** ```cs using System.Collections; using System.Collections.Generic; using UnityEngine; public class JsonObject : MonoBehaviour { public int lives; public int damage; public string atlasName; public string enemyType; // пусть отвечают за тип атласа (жук, стрекоза) // Получаем доступ из Controller'a public string ToJson() { return JsonUtility.ToJson(this, true); // this указывает, что имеется в виду тот же класс, в котором работает строка } public void FromJson(string json) // json мы получаем из файла в директории { JsonUtility.FromJsonOverwrite(json, this); } } ``` ![[atlas.borders]]