web-dev-qa-db-fra.com

Meilleur moyen de sauvegarder des données dans le jeu Unity

Je me demandais ... Quel est le meilleur moyen de sauvegarder des données dans les jeux Unity. JSON? Si c'est le cas, comment? Merci

4
messedupsongguy

_ {Réponse courte à votre longue question!} _

Voici quelques-uns des différentes méthodes et méthodes pour enregistrer les données des projets Unity:

  1. Indépendant de la plate-forme: Une façon de sauvegarder des données dans Unity3D de manière indépendante de la plate-forme consiste à utiliser lePlayerPrefsclass. (En savoir plus1 , 2).

  2. PERSISTENCE - SAUVEGARDE ET CHARGEMENT DE DONNÉES en utilisant DontDestroyOnLoad, PlayerPrefs, et data sérialisationTutoriel vidéo par unité .

  3. Côté serveur: Vous pouvez également utiliser un Server pour enregistrer des données (comme une combinaison de PHP et de la base de données MySQL). Vous pouvez l'utiliser pour enregistrer des données de score, un profil d'utilisateur, etc. En savoir plus sur Unity Wiki

  4. Pour enregistrer les données du jeu sur un Disque dur dans un format compréhensible et chargé ultérieurement, utilisez une fonction .NET/Mono appelée Sérialisation . Apprendre encore plus

  5. SimpleJSONguide sur Unity disponible sur Unity Wiki ou officiellement, vous pouvez voir Sérialisation JSON

  6. SQLite (une base de données intégrée pour votre application) est une autre excellente option pour obtenir le Package gratuit , c'est simple et facile (et mon préféré) si vous connaissez le langage SQL.

23

Vous pouvez utiliser de nombreux actifs disponibles gratuitement et payés dans Asset Store.

Enregistrer le jeu gratuitement - Sauvegarde et chargement XML et JSON.

Syntaxe:

Saver.Save<T> (T data, string fileName);

Exemple:

Saver.Save<MyData> (myData, "myData"); // The .json extension will be added automatically

Save Game Pro - Sauvegarde et chargement binaire. rapide et sécurisé. Facile à utiliser.

Syntaxe:

SaveGame.Save<T> (T data, string identifier);

Exemple:

SaveGame.Save<int> (score, "score");
3
Hasan Bayat

Voir mon précédent answer pour une situation similaire et un moyen simple de sauvegarder des données.

1
kagkar

Si vous souhaitez stocker vos données sur le serveur, il existe un moyen simple d'utiliser PHP et MySQL. Ce que vous devez faire c'est:

ÉTAPE 1:
Obtenez toutes les données que vous voulez de votre serveur en chaîne unique (le code est ci-dessous):

<?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'] . ";";
  }
} 
?>

Et notez que vous DEVEZ SÉPARER CHAQUE chaîne que vous voulez avec un; ou toute autre chose avec laquelle vous êtes à l'aise et rappelez-vous que nous allons l'utiliser en C # dans Unity.

ÉTAPE 2:
Maintenant, vous devriez obtenir les données de votre site Web comme ceci (ce sera une longue chaîne):

 enter image description here

ÉTAPE 3:
Allez maintenant dans Unity, créez un script C # et associez-le à un objet de votre scène et ouvrez le script, puis utilisez ce type de code pour manipuler les données extraites de votre base de données:

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; 
}

}

ÉTAPE 4:
Vous venez juste de récupérer les données de la base de données, vérifiez l’image de la console Unity:

 enter image description here

J'ai fait ceci pour qui cela peut être, comme moi, coincé dans des problèmes de base de données!

1
a_m_dev