Довольно часто в играх можно найти функцию сохранения и загрузки некоторого прогресса прохождения в играх. Это фишка засела настолько глубоко в нашей жизни, что и зачастую в реальности хочется просто сохраниться, а когда придёт время, начать заново проживать жизнь от какого-либо момента.
Если говорить по научному, то: сохранение игры — запись на какое-либо постоянное запоминающее устройство текущего состояния прохождения компьютерной игры, с возможностью вернуться к нему в будущем.
Даже в стандартных играх на Windows, взять например карты, существуют сохранения текущей партии. Так к примеру, если открыть игру Microsoft Solitaire Collections, а далее выбрать режим игры и перемещать карты. То при повторном открытии, можно заметить, что карты остались на тех местах, на которые вы и переместили их.
Как сделать сохранение в файл?
Перед тем как перейти к множеству строк кода, я бы хотел вам объяснить, как будет работать пример, на котором и собираюсь рассказать принцип сохранения данных в файл. За основу я возьму небольшую сценку, в которой присутствует текстовое поле, и две кнопки, одна из которых будет сохранять данные, а другая извлекать их из файла.
Ни чего сложно, вводим текст в текстовое поле, нажимаем клавишу сохранить, очищаем поле, нажимаем клавишу загрузить, получаем результат.
Переходим к написанию скрипта, в первую очередь нам необходимо подключить две библиотеки:
using System.IO;
using UnityEngine.UI;
Данные библиотеки позволяют работать с файлами, а также с UI элементами Unity3D.
Следующим шагом объявляем переменные, которые будем использовать при работе с созданием файла и записи в него данных. Ну и собственно, создаём саму функцию, отвечающую за создание файла и записи в него данных.
public Text textFild; // текстовое поле
public string path = ""; // путь к файлу
public string nameFile = "test.txt"; // название файла
public void OnSave() { // функция сохранения
StreamWriter sw = new StreamWriter(path + "/" + nameFile); // создаём файл
sw.WriteLine(textFild.text); // записываем в файл строку
sw.Close(); // закрываем файл
}
Перед тем как запустить игру, не забудьте закинуть скрипт на какой-либо из элементов, а также настроить его, указав наименование файла, текст из элемента InputField.
Кроме этого, не забудьте установить кнопке сохранения, функцию, отвечающая за сохранения данных в файл.
Запускаем игру, жмем на кнопку и с удивительными глазами смотрим на результат.
Как можно заметить в указанной мною папке, создался текстовый документ, в который и занеслась наша строка.
Как сделать чтение из файла?
С чтением из файла дела обстоят аналогично.
public void OnLoad() // функция чтения
{
StreamReader sr = new StreamReader(path + "/" + nameFile); // открываем файл
textFild.transform.parent.GetComponent<InputField>().text = sr.ReadLine(); // читаем строку
sr.Close(); // закрываем файл
}
Указываем у кнопки загрузки - функцию отвечающую за загрузку данных.
Запускаем проект и проверяем:
Именно таким способом можно реализовать загрузку и сохранение данных в Unity3D.
Данную систему, можно более развить, записывая в файл целый джейсон, предварительно превратив его в обычный текст.