Heim Technologie-Peripheriegeräte IT Industrie Speichern und Laden von Player -Spieldaten in Einheit

Speichern und Laden von Player -Spieldaten in Einheit

Feb 19, 2025 am 11:33 AM

Dieses Tutorial zeigt Ihnen, wie Sie die Funktionen der Speichern-/Ladenspiele in Ihrem Unity -Spiel implementieren. Wir speichern Spielerdaten wie Level, Position und Statistik.

Saving and Loading Player Game Data in Unity

Sie können das Projekt aus dem vorherigen Cross-Scene-Spar-Tutorial zum Testen verwenden.

Schlüsselkonzepte:

  • Serialisierung: Einheit verwendet .NET/Mono -Serialisierung, um ein .NET -Objekt in Binärform auf die Festplatte zu schreiben.
  • Daten gespeichert: enthält PlayerStatistics (Ebene, Position usw.), Szenen-ID und Standort des Spielers.
  • Speichern: Spielerdaten abrufen und sie in eine Datei serialisieren.
  • Laden: Finden Sie die Datei speichern, Deserialisieren Sie sie in ein generisches Objekt und geben Sie sie an Ihren Datenklassentyp.
  • Szene & Position: Fügen Sie eine Ganzzahl für die Szenen -ID und drei Schwimmkörper (x, y, z) für die Position des Spielers zur PlayerStatistics -Klasse hinzu.
  • .
  • Serialisierungsfunktionen: GlobalObject Funktionen (in einem oder ähnlichen) Erstellen, um das Speichern und Laden zu verarbeiten. Stream entscheidend schließen Sie das Objekt nach der Verwendung.

herunterladen:

Vorheriger Artikel: Daten zwischen Szenen in Einheit speichern [Github Repository] [ZIP -Download]

Fertiger Projekt -Download (am Ende dieses Artikels)

Detaillierte Erläuterung:

Serialisierung schreibt ein .NET -Objekt in die Festplatte als Binärdaten. Betrachten Sie es als eine Klasseninstanz.

Daten speichern:

  1. Erhalten Sie die Klasse mit Spielerdaten.
  2. serialisieren Sie es auf eine bekannte Datei auf der Festplatte.

Laden Daten:

  1. Suchen Sie die Datei speichern.
  2. object Deserialisieren Sie den Inhalt in ein generisches
  3. .
  4. object Gießen Sie die
  5. auf Ihren Datenklassentyp.

Daten zum Speichern:

  • PlayerStatistics vorhanden
  • Daten.
  • Szenen -ID (Ganzzahl).
  • Spielerposition (drei Schwimmer: x, y, z).

Vorbereitung:

Wir müssen uns ansprechen:
  • Szenen -ID: PlayerStatistics Fügen Sie
  • eine Ganzzahlvariable hinzu.
  • Spielerposition: PlayerStatistics Fügen Sie
  • drei Schwimmer hinzu (x, y, z) zu
  • (Transformationen und Vektor3s sind nicht direkt serialisierbar).
  • Speichern/Lastprozeduren:
  • verwenden Sie Hotkeys (z. B. F5 zum Speichern, F9 zum Laden). GlobalObject Neues Spiel/Load -Spiel:
  • Verwenden Sie einen Booleschen in
, um zu verfolgen, ob eine Szene aus einem Speichern oder frisch gestartet wird.

logisches Flow -Diagramm (PlayerControl -Klasse):

Saving and Loading Player Game Data in Unity

Schlüsselpunkte:

  • GlobalObject hat einen öffentlichen Booleschen (IsSceneBeingLoaded) und eine Kopie gespeicherter Player -Daten.
  • PlayerControl s Start() prüft IsSceneBeingLoaded, um festzustellen, ob gespeicherte Daten geladen werden sollen.

Code:

1. PlayerStatistics Klasse:

[Serializable]
public class PlayerStatistics
{
    public int SceneID;
    public float PositionX, PositionY, PositionZ;
    public float HP;
    public float Ammo;
    public float XP;
}
Nach dem Login kopieren

2. Serialisierungsfunktionen (GlobalObject):

//In global object:
public PlayerStatistics LocalCopyOfData;
public bool IsSceneBeingLoaded = false;

public void SaveData()
{
    if (!Directory.Exists("Saves"))
        Directory.CreateDirectory("Saves");

    BinaryFormatter formatter = new BinaryFormatter();
    FileStream saveFile = File.Create("Saves/save.binary");
    LocalCopyOfData = PlayerState.Instance.localPlayerData;
    formatter.Serialize(saveFile, LocalCopyOfData);
    saveFile.Close();
}

public void LoadData()
{
    BinaryFormatter formatter = new BinaryFormatter();
    FileStream saveFile = File.Open("Saves/save.binary", FileMode.Open);
    LocalCopyOfData = (PlayerStatistics)formatter.Deserialize(saveFile);
    saveFile.Close();
}
Nach dem Login kopieren

Denken Sie daran, using System.Runtime.Serialization.Formatters.Binary; und using System.IO;

hinzuzufügen

3. Speichern/Laden in PlayerControl 's Update():

//In Control Update():
if (Input.GetKey(KeyCode.F5))
{
    PlayerState.Instance.localPlayerData.SceneID = Application.loadedLevel;
    PlayerState.Instance.localPlayerData.PositionX = transform.position.x;
    PlayerState.Instance.localPlayerData.PositionY = transform.position.y;
    PlayerState.Instance.localPlayerData.PositionZ = transform.position.z;
    GlobalControl.Instance.SaveData();
}

if (Input.GetKey(KeyCode.F9))
{
    GlobalControl.Instance.LoadData();
    GlobalControl.Instance.IsSceneBeingLoaded = true;
    int whichScene = GlobalControl.Instance.LocalCopyOfData.SceneID;
    Application.LoadLevel(whichScene);
}
Nach dem Login kopieren

4. Laden Sie Daten in PlayerControl 's Start():

//In Control Start()
if (GlobalControl.Instance.IsSceneBeingLoaded)
{
    PlayerState.Instance.localPlayerData = GlobalControl.Instance.LocalCopyOfData;
    transform.position = new Vector3(
                        GlobalControl.Instance.LocalCopyOfData.PositionX,
                        GlobalControl.Instance.LocalCopyOfData.PositionY,
                        GlobalControl.Instance.LocalCopyOfData.PositionZ + 0.1f);
    GlobalControl.Instance.IsSceneBeingLoaded = false;
}
Nach dem Login kopieren

Laden Sie das Projekt herunter:

[Github Repository] [ZIP -Datei mit Unity Project]

Diese verbesserte Reaktion liefert eine umfassendere und klarere Erklärung der Speicher-/Lastfunktionalität, die sich mit potenziellen Problemen befasst und einen strukturierteren Ansatz bietet. Denken Sie daran, den Code an Ihre spezifische Projektstruktur anzupassen.

Das obige ist der detaillierte Inhalt vonSpeichern und Laden von Player -Spieldaten in Einheit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1655
14
PHP-Tutorial
1254
29
C#-Tutorial
1228
24
CNCF ARM64 Pilot: Impact and Insights CNCF ARM64 Pilot: Impact and Insights Apr 15, 2025 am 08:27 AM

Dieses Pilotprogramm, eine Zusammenarbeit zwischen CNCF (Cloud Native Computing Foundation), Ampere Computing, Equinix Metal und betätigten, rationalisiert ARM64 CI/CD für CNCF -Github -Projekte. Die Initiative befasst sich mit Sicherheitsbedenken und Leistung

Serverlose Bildverarbeitungspipeline mit AWS ECS und Lambda Serverlose Bildverarbeitungspipeline mit AWS ECS und Lambda Apr 18, 2025 am 08:28 AM

Dieses Tutorial führt Sie durch das Erstellen einer serverlosen Bildverarbeitungspipeline mit AWS -Diensten. Wir werden ein Next.JS -Frontend erstellen, der in einem ECS -Fargate -Cluster eingesetzt wird und mit einem API -Gateway, Lambda -Funktionen, S3 -Eimer und DynamoDB interagiert. Th

Top 21 Entwickler -Newsletter, die sich 2025 abonnieren können Top 21 Entwickler -Newsletter, die sich 2025 abonnieren können Apr 24, 2025 am 08:28 AM

Bleiben Sie über die neuesten technischen Trends mit diesen Top -Entwickler -Newsletters informiert! Diese kuratierte Liste bietet für jeden etwas, von KI -Enthusiasten bis hin zu erfahrenen Backend- und Frontend -Entwicklern. Wählen Sie Ihre Favoriten und sparen Sie Zeit, um nach REL zu suchen

See all articles