Мне было интересно... Как лучше всего сохранять данные в играх Unity. JSON? Если да, то как? Спасибо
Лучший способ сохранить данные в игре Unity
Ответы (3)
Вот некоторые из различных способов и методов сохранения данных для проектов Unity:
Независимый от платформы. Один из способов сохранения данных в Unity3D независимым от платформы способом — использовать файл PlayerPrefs. (Подробнее 1, 2). PlayerPrefs — статический класс, очень простой в использовании, но ненадежный.
ПОСТОЯННОСТЬ — СОХРАНЕНИЕ И ЗАГРУЗКА ДАННЫХ с использованием DontDestroyOnLoad, PlayerPrefs и сериализации данных Видеоруководство от unity.
На стороне сервера. Вы также можете использовать сервер для сохранения данных (например, комбинацию PHP и базы данных MySQL). Вы можете использовать его для сохранения данных о счете, профиля пользователя и т. д. Узнайте больше на Unity Wiki< /а>
Для сохранения внутриигровых данных на жесткий диск в формате, который можно будет понять и загрузить позже, используйте функцию .NET/Mono, известную как Сериализация. Подробнее...
Простое руководство JSON по Unity доступно на Unity Wiki или официально. вы можете увидеть сериализацию JSON
SQLite (встроенная база данных для вашего приложения) — еще один отличный вариант для вас, чтобы получить Бесплатный пакет, это просто и легко (мое любимое), если вы знаете SQL.
Scriptable Object: это контейнер данных. Полезно для неизменяемых данных. Подходит для больших неизменяемых данных и удивительно надежной памяти проектов.
Приведенное выше взято из моего сообщения в блоге о методах сохранения данных для Приложения Unity3d.
PlayerPrefs
предназначены для хранения пользовательских настроек (отсюда и название), например, громкость звука и НЕ должны использоваться для хранения важных данных, таких как ход игры, поскольку они могут быть удалены при обновлении приложения!
- person derHugo; 28.09.2019
Вы можете использовать многие активы, которые доступны бесплатно и платно в магазине активов.
Сохранить игру бесплатно — сохранение и загрузка XML и JSON.
Синтаксис:
Saver.Save<T> (T data, string fileName);
Пример:
Saver.Save<MyData> (myData, "myData"); // The .json extension will be added automatically
Save Game Pro – сохранение и загрузка двоичного файла. быстро и безопасно. Легко использовать.
Синтаксис:
SaveGame.Save<T> (T data, string identifier);
Пример:
SaveGame.Save<int> (score, "score");
Если вы хотите хранить свои данные на сервере, есть простой способ с PHP и MySQL. Что вам нужно сделать, это:
ШАГ 1:
Получите любые данные с вашего сервера всего одной строкой (код ниже):
<?php
//SERVER CONNECTION
$server_name = "localhost";
$server_user = "Er.Ellison";
$server_pass = "supersecretPassword";
$server_db = "game_test_db";
$connection = new mysqli($server_name , $server_user , $server_pass , $server_db);
if(!$connection) {
die("Connection failed !" . mysqli_connect_error());
}
// QUERY
$query = "SELECT * FROM items";
$result = mysqli_query($connection , $query);
if(mysqli_num_rows($result) > 0){
while($row = mysqli_fetch_array($result)){
echo "id:" . $row['id'] . "|username:" . $row['username'] . "|type:" . $row['type'] . "|score:" . $row['score'] . ";";
}
}
?>
И обратите внимание, что вы ДОЛЖНЫ РАЗДЕЛЯТЬ ЛЮБУЮ строку, которую хотите, с помощью ; или любую вещь, которая вам удобна, и помните, что мы собираемся использовать ее в C# в Unity.
ШАГ 2:
Теперь вы должны получить данные из своего Интернета следующим образом (это будет длинная строка):
ШАГ 3:
Теперь перейдите в Unity и создайте сценарий C#, прикрепите его к любому объекту в вашей сцене и откройте сценарий, а затем используйте этот код для управления данными, которые вы извлекли из своей базы данных:
public class DataLoader : MonoBehaviour {
public string[] items;
// Use this for initialization
IEnumerator Start () {
WWW itemsData = new WWW ("http://localhost/_game/test/itemsdata.php");
yield return itemsData;
string itemsDataStrign = itemsData.text;
print (itemsDataStrign);
items = itemsDataStrign.Split (';');
print (GetDataValue(items[0] , "cost:"));
}
string GetDataValue(string data, string index) {
string value = data.Substring (data.IndexOf(index) + index.Length);
if (value.Contains ("|")) {
value = value.Remove (value.IndexOf("|"));
}
return value;
}
}
ШАГ 4:
Вы только что СЕЙЧАС получили данные из базы данных, проверьте изображение в консоли Unity:
Я сделал это для тех, кто, как и я, застрял в проблемах с базой данных!
$reuslt
в вашем коде (три экземпляра) - это опечатка.
- person halfer; 09.08.2017