Как сделать сохранение в Unity через файлы?

Довольно часто в играх можно найти функцию сохранения и загрузки некоторого прогресса прохождения в играх. Это фишка засела настолько глубоко в нашей жизни, что и зачастую в реальности хочется просто сохраниться, а когда придёт время, начать заново проживать жизнь от какого-либо момента.

Если говорить по научному, то: сохранение игры — запись на какое-либо постоянное запоминающее устройство текущего состояния прохождения компьютерной игры, с возможностью вернуться к нему в будущем.

Даже в стандартных играх на Windows, взять например карты, существуют сохранения текущей партии. Так к примеру, если открыть игру Microsoft Solitaire Collections, а далее выбрать режим игры и перемещать карты. То при повторном открытии, можно заметить, что карты остались на тех местах, на которые вы и переместили их.

Как сделать сохранение в Unity через файлы?

Как сделать сохранение в файл?

Перед тем как перейти к множеству строк кода, я бы хотел вам объяснить, как будет работать пример, на котором и собираюсь рассказать принцип сохранения данных в файл. За основу я возьму небольшую сценку, в которой присутствует текстовое поле, и две кнопки, одна из которых будет сохранять данные, а другая извлекать их из файла.

Как сделать сохранение в Unity через файлы?
Сцена для сохранения и загрузки данных из файла

Ни чего сложно, вводим текст в текстовое поле, нажимаем клавишу сохранить, очищаем поле, нажимаем клавишу загрузить, получаем результат.

Переходим к написанию скрипта, в первую очередь нам необходимо подключить две библиотеки:

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.

Как сделать сохранение в Unity через файлы?
Настройка скрипта

Кроме этого, не забудьте установить кнопке сохранения, функцию, отвечающая за сохранения данных в файл.

Как сделать сохранение в Unity через файлы?
Настройка кнопки сохранения

Запускаем игру, жмем на кнопку и с удивительными глазами смотрим на результат.

Как сделать сохранение в Unity через файлы?
Результат сохранения

Как можно заметить в указанной мною папке, создался текстовый документ, в который и занеслась наша строка.

Как сделать чтение из файла?

С чтением из файла дела обстоят аналогично.

 public void OnLoad() // функция чтения
    {
        StreamReader sr = new StreamReader(path + "/" + nameFile); // открываем файл
        textFild.transform.parent.GetComponent<InputField>().text = sr.ReadLine(); // читаем строку
        sr.Close(); // закрываем файл
    }

Указываем у кнопки загрузки - функцию отвечающую за загрузку данных.

Как сделать сохранение в Unity через файлы?
Кнопка загрузки

Запускаем проект и проверяем:

Как сделать сохранение в Unity через файлы?
До нажатия на кнопк
Как сделать сохранение в Unity через файлы?
После нажатия на кнопку

Именно таким способом можно реализовать загрузку и сохранение данных в Unity3D.

Данную систему, можно более развить, записывая в файл целый джейсон, предварительно превратив его в обычный текст.

4.17/5 (6)

Оцените