Unity запись в файл

Unity запись в файл

Любой игрок чтит как минимум три заповеди: «Уклоняйся!», «Перекатывайся!», «Сохраняйся!». Ибо их нарушение сулит – боль. Ну, и раз такое дело, мы рассмотрим три способа, как сохранять игровые данные. Конкретно на примере, переменных, типа: bool, float, int, string и массив. Первый вариант, с использованием стандартных функций Unity. Второй, сохранение в файл, формат которого можно выбрать на свое усмотрение, кроме того, этот вариант дает возможность шифровать данные. Третий способ, работа с файлом формата XML.

Приступим к делу. Создаем C# с любым именем и редактируем его.

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

Также, общие переменные:

То, что будем сохранять:

Куда будем загружать:

Имя нашего файла:

Сохранение в реестр (если Windows):

Чтение массива здесь сделано с расчетом на то, что неизвестно сколько там элементов записано, поэтому перебираем все, какие есть с соответствующими ключами. Допустим при первом сохранение массив содержал три строки, с добавленным номером 0,1,2. А в процессе игры, могут произойти изменения и будут элементы с номерами 0,1,2,3,4,5 и т.д. Если есть номер — то добавляется +1 и снова проверка. Однако, надо иметь ввиду, что поскольку проверка осуществляется по конкретному ключу, то нельзя просто удалить один элемент, иначе проверка прервется на первом отсутствующем ключе. Обновлять массив надо весь, сохраняя отсчет с .

Добавим переменную для этого способа, она понадобится для выбора — шифровать данные или нет.

Внимание! Массив тут тоже идет с конкретным ключом, ситуация как и в первом случаи. И еще одна важная деталь — к каждому ключу добавляется переменная, содержащая пробел, а потом уже данные. Сам ключ должен быть без пробела! Потому как это разделитель, логика такая: то что идет до первого пробела — считается ключом, то что идет после первого пробела — считается данными, которые надо загрузить. Вообще, можно просто читать строки без заморочек с ключами, но в таком случаи необходимо соблюдать порядок записи/чтения, т.е. в каком порядке шла запись — в таком же нужно и читать данные. Не очень-то удобно, при учете того, что редактировать код и переставлять его куски с места на место, придется часто в процессе разработки. Поэтому мы пишем строку допустим: energy 68 — затем разделяем и получаем нужное нам число, на запрос energy.

Читайте также:  Не удается установить вайбер на телефон

Кстати формат файла в примере .ncs три буквы от названия нашего проекта, Вы разумеется можете придумать, что-то своё.

Функция шифрования и дешифрирования:

Функция поиска строки по заданному ключу:

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

Значит, что в value будет удалено всё, после первого пробела.

Означает, что в value будет вырезано первое слово.

Результат, который будет записан в файл, если не зашифровано:

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

Последняя строка Info не особо то и нужна, но для примера сойдет.)

Начну с того, что в Unity есть своя система сохранений PlayerPrefs, но она имеет ряд минусов:

1) Не всем хочется засорять реестр.
2) Нет возможности сделать несколько слотов сохранения (костыли с припиской не считаются).
3) Нет возможности передать сохранение или перенести на другое устройство.

Поэтому я решил сделать свою систему сохранений.

В своих целях я писал на местной интерпретации Javascript, но, думаю, можно перенести и на C#.

Создание и импорт файла

Для начала получаем ссылку на текущий файл. Для примера возьмем локальную папку name_data/StreamingAssets/Saves. Можно выставить любой путь.

Название файла задаем в переменной saveName, плюс к нему будет приписываться порядковый номер сохранения.

playerDataPath = Application.streamingAssetsPath +’/Saves/’+ saveName + PlayerPrefs.GetInt(«CurrentSave») + ".db";

Если слоты сохранения не нужны, можно убрать PlayerPrefs.GetInt(«CurrentSave»).
Назначать номер слота — PlayerPrefs.SetInt(«CurrentSave», num), где num — порядковый номер.
".db" — формат файла. На самом деле, это обычный текстовый документ, но лучше придумать свой формат, чтобы не искушать пользователя отредактировать.

Читайте также:  Обход apple id 2018

Итак, мы имеем ссылку на файл в переменной playerDataPath. Далее проверяем нахождения файла по ссылке, и если его там нет — создаем.

if (!File.Exists(playerDataPath)) <
var dataWriter: StreamWriter = new StreamWriter(playerDataPath);
>

else <
var dataReader = new File.OpenText(playerDataPath);
for(var i: int = 1; i Теги: unity3d, javascript, сохранение в файл

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

Привет, я делаю приложение в Unity, и я пытаюсь добавить код, который будет регистрировать действия пользователя, то есть они создали определенный игровой объект. То, что я пытаюсь сделать, это записать в файл .txt, хранящийся на сервере. У меня есть следующий код, основанный на:

и они предлагают, что это работает, для меня он ничего не пишет в файл.

Вот мой PHP-код (SaveData.php):

И вот C# (SaveData.cs), который я прикрепляю к игровым объектам, я изменяю значение Action в окне инспектора:

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

Буду признателен за любую оказанную помощь.

Ссылка на основную публикацию
Sony nec optiarc ad 5200a
Тип : DVD RW DL Запись на двухслойные диски Blu-ray : Нет Интерфейс : IDE Размещение : внутренний Предназначение :...
Just cause 3 как управлять вингсьютом
Some Just Cause 3 purchase options (such as Just Cause 3 XL) include a promise of exclusive day one Flame...
Katawa shoujo схема на русском
Katawa Shoujo ЛоготипРазработчикFour Leaf StudiosИздательFour Leaf Studios[d]Дата выпуска4 января 2012 [1]ЛицензияCreative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported (CC BY-NC-ND 3.0)Последняя версия1.3.1Жанрвизуальный роман,...
Sony nec optiarc ad 7203s
Товар под заказ с удаленного склада (1-2 дня) Для запроса наличия у поставщика оформите заказ. Отгрузка возможна: 1-2 дня Рекомендуем...
Adblock detector