Для создания и сохранения Map или Dictionary в PlayerPrefs в Unity, вам следует использовать сериализацию и десериализацию данных.
PlayerPrefs - это класс, который позволяет вам сохранять и загружать данные в виде пар "ключ-значение", а также сохранять эти данные между запусками приложения.
Прежде всего, вам нужно создать свой собственный класс, который будет использоваться в качестве значения в Map или Dictionary. Этот класс должен быть сериализуемым, чтобы его можно было сохранить и загрузить. Например, представим, что у вас есть класс Person:
[System.Serializable] public class Person { public string name; public int age; }
Затем вы можете использовать Dictionary для хранения объектов Person, а затем сериализовать их в формат JSON для сохранения в PlayerPrefs. Вот пример кода:
using UnityEngine; using System.Collections.Generic; using System.Linq; using Newtonsoft.Json; public class GameManager : MonoBehaviour { // Создаем Dictionary для хранения объектов Person private Dictionary<string, Person> persons = new Dictionary<string, Person>(); private void Start() { // Добавляем объекты Person в Dictionary persons.Add("person1", new Person { name = "John", age = 25 }); persons.Add("person2", new Person { name = "Jane", age = 30 }); // Сохраняем Dictionary в PlayerPrefs SavePersons(); // Загружаем Dictionary из PlayerPrefs LoadPersons(); } private void SavePersons() { // Преобразуем Dictionary в JSON-строку string json = JsonConvert.SerializeObject(persons); // Сохраняем JSON-строку в PlayerPrefs PlayerPrefs.SetString("personsData", json); PlayerPrefs.Save(); } private void LoadPersons() { // Загружаем JSON-строку из PlayerPrefs string json = PlayerPrefs.GetString("personsData"); // Десериализуем JSON-строку в Dictionary persons = JsonConvert.DeserializeObject<Dictionary<string, Person>>(json); // Пример использования данных foreach (var person in persons.Values) { Debug.Log($"Name: {person.name}, Age: {person.age}"); } } }
В этом примере используется библиотека Newtonsoft.Json (требуется установка через Unity Package Manager). Она позволяет сериализовать и десериализовать объекты в формате JSON.
В методе SavePersons() мы преобразуем Dictionary в JSON-строку и сохраняем ее в PlayerPrefs под ключом "personsData". В методе LoadPersons() мы загружаем JSON-строку из PlayerPrefs, десериализуем ее обратно в Dictionary и используем значения объектов Person.
Таким образом, мы можем создать и сохранить Map или Dictionary в PlayerPrefs в Unity, используя сериализацию и десериализацию данных. Это позволит нам сохранять и загружать сложные структуры данных, такие как словари, и использовать их между запусками приложения.