Maison >développement back-end >C++ >Comment transmettre efficacement les données entre les scènes de l'unité?

Comment transmettre efficacement les données entre les scènes de l'unité?

DDD
DDDoriginal
2025-02-01 09:26:11695parcourir

How to Efficiently Pass Data Between Scenes in Unity?

passer des données entre les scènes de l'unité

Problème: passer une valeur de score d'une scène à une autre en utilisant les playerprefs dans l'unité.

Solution:

1. Variables statiques

Cette méthode convient aux types de données primitifs (par exemple, int, float) ou à des classes qui n'héritent pas de monobehaviour. Exemple:

public static int score;

// In Scene 1
score++;

// In Scene 2
Debug.Log(score); // Displays the updated score

2. DontDestROYOnload

Pour GameObjects ou Composants, utilisez DontDestRoyOnload () dans la fonction Awake () pour empêcher les détruire lorsque la scène change.

void Awake()
{
    GameObject.DontDestroyOnLoad(gameObject);
}

3. PlayerPrefs

PlayerPrefs fournit un stockage persistant pour des types de données simples.

// In Scene 1
PlayerPrefs.SetInt("score", 50);

// In Scene 2
int score = PlayerPrefs.GetInt("score");

4. Sérialisation

Pour les structures de données complexes, utilisez la sérialisation en JSON ou XML. Ensuite, enregistrez les données dans un fichier en utilisant FileIO et chargez-les dans la scène suivante.

[Serializable]
public class PlayerData
{
    public int score;
}

// In Scene 1
PlayerData data = new PlayerData();
data.score = 100;
File.WriteAllText("playerdata.json", JsonUtility.ToJson(data));

// In Scene 2
PlayerData data = JsonUtility.FromJson<PlayerData>(File.ReadAllText("playerdata.json"));

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn