la classe PlayerPrefs

Un moyen d'enregistrer des données dans Unity indépendamment de la plate-forme consiste à utiliser la classe PlayerPrefs. Stocke et accède aux préférences des joueurs entre les sessions de jeu. Cette classe fonctionne comme une table de hachage, vous permettant de stocker des paires clé-valeur.

Éditeur / Standalone

Sur MacOS, les PlayerPrefs sont stockés dans le dossier ~/Library/Preferences, dans un fichier nommé unity.[company name].[product name].plist, où les noms de société et de produit sont les noms définis dans les Project Settings. Le même fichier .plist est utilisé pour les deux projets exécutés dans l'éditeur et les lecteurs Standalone.

Sous Windows, les PlayerPrefs sont stockés dans le registre sous la clé HKCU\Software\[company name]\[product name], où les noms de société et de produit sont les noms définis dans les Project Settings.

Sous Linux, les PlayerPrefs peuvent être trouvés dans ~/.config/unity3d/[CompanyName]/[ProductName] à l'aide des noms de société et de produit spécifiés dans les Project Settings.

Sur les applications du Windows Store, les PlayerPrefs peuvent être trouvées dans %userprofile%\AppData\Local\Packages\[ProductPackageId]>\LocalState\playerprefs.dat

Sur Windows Phone 8, les PlayerPrefs peuvent être trouvées dans le dossier local de l'application. Sur Windows Store Apps, il s'agit de ‹main drive>:\Users\\AppData\Local\Packages\\LocalState, le répertoire est accessible en écriture, ce qui vous permet de créer, lire et écrire des fichiers. Dans l'éditeur, ce sera ‹your project path>\LocalState.

Sur Android les données (persistant) sont stockés sur l'appareil. Les données sont enregistrées dans SharedPreferences. C # / JavaScript, Android Java et le code natif peuvent tous accéder aux données PlayerPrefs. Les données PlayerPrefs sont physiquement stockées dans /data/data/pkg-name/shared_prefs/pkg-name.xml.

Sur WebGL, les PlayerPrefs sont stockés à l'aide de l'API IndexedDB du navigateur.

Sur iOS, les PlayerPrefs sont stockés dans /Library/Preferences/[bundle identifier].plist.

Méthodes statiques

DeleteAllSupprime toutes les clés et valeurs des préférences. Utiliser avec précaution.
DeleteKeySupprime la clé et sa valeur correspondante des préférences.
GetFloatRenvoie la valeur correspondant à la clé dans le fichier de préférences s'il existe.
GetIntRenvoie la valeur correspondant à la clé dans le fichier de préférences s'il existe.
GetStringRenvoie la valeur correspondant à la clé dans le fichier de préférences s'il existe.
HasKeyRenvoie true si la clé existe dans les préférences.
SaveÉcrit toutes les préférences modifiées sur le disque.
SetFloatDéfinit la valeur de la préférence identifiée par la clé.
SetIntDéfinit la valeur de la préférence identifiée par la clé.
SetStringDéfinit la valeur de la préférence identifiée par la clé.

PlayerPrefs.DeleteAll

public static void DeleteAll();

Supprime toutes les clés et valeurs des préférences. Utiliser avec précaution. Appelez cette fonction dans un script pour supprimer tous les paramètres actuels dans les PlayerPrefs. Toutes les valeurs ou clés précédemment configurées sont ensuite réinitialisées. Soyez prudent lorsque vous utilisez cela.

C#// Cet exemple crée un bouton sur l'écran qui, s'il est activé, supprime tous les paramètres PlayerPrefs.
// Vous devez d'abord définir des valeurs ou des clés dans PlayerPrefs pour voir cela en action.
using UnityEngine;

public class Example : MonoBehaviour
{
    void OnGUI()
    {
        // Supprime tous les paramètres PlayerPrefs en appuyant sur ce bouton
        if (GUI.Button(new Rect(100, 200, 200, 60), "Supprimer"))
        {
            PlayerPrefs.DeleteAll();
        }
    }
}

Voici un exemple plus grand qui configure les PlayerPrefs ainsi que la suppression des paramètres.

C#// Attachez d'abord ce script à un GameObject dans la scène pour configurer les PlayerPrefs.
using UnityEngine;
using UnityEngine.SceneManagement;

public class SetUpPlayerPrefsExample : MonoBehaviour
{
    string m_PlayerName;

    void Start()
    {
        m_PlayerName = "Entrez votre nom";
    }

    void Update()
    {
        // Donne au PlayerPrefs des valeurs à envoyer à la scène suivante
        PlayerPrefs.SetFloat("Santé", 50.0F);
        PlayerPrefs.SetInt("Score", 20);
        PlayerPrefs.SetString("Nom", m_PlayerName);
    }

    void OnGUI()
    {
        // Crée un champ de texte dans lequel l'utilisateur entre son nom
        m_PlayerName = GUI.TextField(new Rect(10, 10, 200, 20), m_PlayerName, 25);

        // Crée un bouton qui charge le niveau approprié lorsque vous appuyez dessus
        if (GUI.Button(new Rect(10, 30, 200, 60), "Scène suivante"))
        {
            SceneManager.LoadScene("Scene2");
        }
    }
}
C#// Cet autre script montre comment les valeurs de PlayerPrefs sont réinitialisées à l'aide de la fonction PlayerPrefs.DeleteAll().
// Ouvrez une Scène différente (celle que vous avez déjà nommée - "Scene2") et attachez ce script à un nouveau GameObject.
// Utilisez ce script pour récupérer les paramètres et les afficher sous forme de texte à l'écran.
// Utilisez le bouton inclus dans le script pour supprimer tous ces paramètres et le texte à l'écran sera également réinitialisé.

using UnityEngine;
using UnityEngine.UI;

public class PlayerPrefsDeleteAllExample : MonoBehaviour
{
    int m_Score;
    float m_Health;
    string m_PlayerName;

    void Start()
    {
        // Récupère les paramètres PlayerPref
        SetText();
    }

    void SetText()
    {
        // Récupérer le score, la santé et le nom depuis le PlayerPrefs
        m_Health = PlayerPrefs.GetFloat("Santé", 0);
        m_Score = PlayerPrefs.GetInt("Score", 0);
        m_PlayerName = PlayerPrefs.GetString("Nom", "No Name");
    }

    void OnGUI()
    {
        // Récupère les paramètres PlayerPrefs et les affiche à l'écran en utilisant les Labels
        GUI.Label(new Rect(50, 50, 200, 30), "Nom : " + m_PlayerName);
        GUI.Label(new Rect(50, 90, 200, 30), "Santé : " + m_Health);
        GUI.Label(new Rect(50, 130, 200, 30), "Score : " + m_Score);

        // Supprime tous les paramètres PlayerPrefs en appuyant sur ce bouton
        if (GUI.Button(new Rect(50, 0, 100, 30), "Supprimer"))
        {
            PlayerPrefs.DeleteAll();
            // Récupère les paramètres mis à jour pour changer le texte
            SetText();
        }
    }
}

PlayerPrefs.DeleteKey

public static void DeleteKey(string key);

Supprime la clé (key) et sa valeur correspondante des préférences.

PlayerPrefs.GetFloat

public static float GetFloat(string key, float defaultValue = 0.0F);

Renvoie la valeur correspondant à la clé dans le fichier de préférences s'il existe. S'il n'existe pas, il retournera defaultValue.

C#// Utilisez ce script pour extraire les paramètres PlayerPrefs et les afficher sous forme de texte à l'écran.

using UnityEngine;
using UnityEngine.UI;

public class PlayerPrefsDeleteAllExample : MonoBehaviour
{
    float m_Health;

    void Start()
    {
        // Récupère les paramètres PlayerPref
        SetText();
    }

    void SetText()
    {
        // Récupère l'état des PlayerPrefs (place ces PlayerPrefs ailleurs). Si aucun flottant de ce nom n'existe, la valeur par défaut est 0
        m_Health = PlayerPrefs.GetFloat("Santé", 0);
    }

    void OnGUI()
    {
        // Récupère les paramètres PlayerPrefs et les affiche à l'écran en utilisant les Labels
        GUI.Label(new Rect(50, 90, 200, 30), "Santé : " + m_Health);
    }
}

PlayerPrefs.GetInt

public static int GetInt(string key, int defaultValue = 0);

Renvoie la valeur correspondant à la clé dans le fichier de préférences s'il existe. S'il n'existe pas, il retournera defaultValue.

C#// Utilisez ce script pour récupérer les paramètres et les afficher sous forme de texte à l'écran.

using UnityEngine;
using UnityEngine.UI;

public class PlayerPrefsDeleteAllExample : MonoBehaviour
{
    int m_Score;

    void Start()
    {
        // Récupère les paramètres PlayerPref
        SetText();
    }

    void SetText()
    {
        // Récupère l'état des PlayerPrefs (place ces PlayerPrefs ailleurs). Si aucun flottant de ce nom n'existe, la valeur par défaut est 0
        m_Score = PlayerPrefs.GetInt("Score", 0);
    }

    void OnGUI()
    {
        // Récupère les paramètres PlayerPrefs et les affiche à l'écran en utilisant les Labels
        GUI.Label(new Rect(50, 130, 200, 30), "Score : " + m_Score);
    }
}

PlayerPrefs.GetString

public static string GetString(string key, string defaultValue = "");

Renvoie la valeur correspondant à la clé dans le fichier de préférences s'il existe. S'il n'existe pas, il retournera defaultValue.

C#// Utilisez ce script pour récupérer les paramètres et les afficher sous forme de texte à l'écran.

using UnityEngine;
using UnityEngine.UI;

public class PlayerPrefsDeleteAllExample : MonoBehaviour
{
    string m_PlayerName;

    void Start()
    {
        // Récupère les paramètres PlayerPref
        SetText();
    }

    void SetText()
    {
        // Récupère le nom (string) des PlayerPrefs (place ces Playerprefs dans un autre script). Si aucune chaîne n'existe, la valeur par défaut est "No Name"
        m_PlayerName = PlayerPrefs.GetString("Nom", "No Name");
    }

    void OnGUI()
    {
        // Récupère les paramètres PlayerPrefs et les affiche à l'écran en utilisant les Labels
        GUI.Label(new Rect(50, 50, 200, 30), "Nom : " + m_PlayerName);
    }
}

PlayerPrefs.HasKey

public static bool HasKey(string key);

Renvoie true si la clé existe dans les préférences.

PlayerPrefs.Save

public static void Save();

Par défaut, Unity écrit les préférences sur le disque pendant OnApplicationQuit(). Dans les cas où le jeu se bloque ou se termine prématurément, vous pouvez écrire les PlayerPrefs à des «points de contrôle» dans votre jeu. Cette fonction écrira sur le disque causant potentiellement un petit contretemps, il n'est donc pas recommandé d'appeler pendant le jeu.

PlayerPrefs.SetFloat

public static void SetFloat(string key, float value);

Définit la valeur de la préférence identifiée par la clé.

C#// Ce script définit le flottant dans les PlayerPrefs pour qu'elle soit utilisée ailleurs. Utilisez GetFloat pour renvoyer les paramètres.

using UnityEngine;
using UnityEngine.SceneManagement;

public class Example : MonoBehaviour
{
    void Start()
    {
        // Donne au PlayerPrefs des valeurs à envoyer
        PlayerPrefs.SetFloat("Santé", 50.0F);
    }

    void OnGUI()
    {
        // Crée un bouton qui charge le niveau approprié lorsque vous appuyez dessus
        if (GUI.Button(new Rect(100, 200, 200, 60), "Scène suivante"))
        {
            SceneManager.LoadScene("Scene2");
        }
    }
}

PlayerPrefs.SetInt

public static void SetInt(string key, int value);

Définit la valeur de la préférence identifiée par la clé.

C#// Associez ce script à un GameObject dans la scène pour configurer les PlayerPrefs.

using UnityEngine;
using UnityEngine.SceneManagement;

public class SetUpPlayerPrefsExample : MonoBehaviour
{
    void Start()
    {
        // Donne au PlayerPrefs des valeurs à envoyer à la scène suivante
        PlayerPrefs.SetInt("Score", 20);
    }

    void OnGUI()
    {
        // Crée un bouton qui charge le niveau approprié lorsque vous appuyez dessus
        if (GUI.Button(new Rect(10, 30, 200, 60), "Scène suivante"))
        {
            SceneManager.LoadScene("Scene2");
        }
    }
}

PlayerPrefs.SetString

public static void SetString(string key, string value);

Définit la valeur de la préférence identifiée par la clé.

C#// Associez ce script à un GameObject dans la scène pour configurer les PlayerPrefs.

using UnityEngine;
using UnityEngine.SceneManagement;

public class SetUpPlayerPrefsExample : MonoBehaviour
{
    string m_PlayerName;

    void Start()
    {
        m_PlayerName = "Entrez votre nom";
    }

    void Update()
    {
        // Donne au PlayerPrefs des valeurs à envoyer à la scène suivante
        PlayerPrefs.SetString("Nom", m_PlayerName);
    }

    void OnGUI()
    {
        // Crée un champ de texte dans lequel l'utilisateur entre son nom
        m_PlayerName = GUI.TextField(new Rect(10, 10, 200, 20), m_PlayerName, 25);

        // Crée un bouton qui charge le niveau approprié lorsque vous appuyez dessus
        if (GUI.Button(new Rect(10, 30, 200, 60), "Scène suivante"))
        {
            SceneManager.LoadScene("Scene2");
        }
    }
}

les réactions

Pour laisser un avis, vous devez être inscrit et connecté

Se connecter