Schreiben von Daten in den von Unity empfohlenen Ordnerpfad, der durch persistentDataPath angegeben wird

Diese Seite wurde aktualisiert :
Erstellungsdatum der Seite :

Verifizierungsumgebung

Fenster
  • Windows 11
Unity-Editor
  • 2021.3.3f1
Eingabesystem-Paket
  • 1.3.0

Voraussetzungen für diesen Tipp

Die folgenden Einstellungen wurden im Vorfeld als Prämisse für die Beschreibung dieses Tipps vorgenommen.

Zuerst

In den vorherigen TippsPlayerPrefs haben wir die Methode zum Speichern und Laden von Daten verwendet. Dies ist jedoch nicht für den Umgang mit großen Datenmengen und die gemeinsame Nutzung von Daten geeignet.

Dieses Mal speichern und laden wir die Daten in das lokale Ordnerverzeichnis. Grundsätzlich können Sie den Schreibort frei angeben, aber es ist vorteilhafter, den in Unity angegebenen persistentDataPath zu verwenden, daher werden wir dieses Mal dies verwenden.

Platzierung und Handhabung der Benutzeroberfläche

Dazu verwenden wir den vorherigen Tipp "Lesen und Schreiben von Daten mit PlayerPrefs" so, wie er ist Bitte beziehen Sie sich darauf und implementieren Sie es bis zu dem Punkt, an dem Sie eine Schaltflächenverarbeitung durchführen können.

Übrigens werde ich auch einen Platz platzieren, an dem der Wert von angezeigt wird, der diesmal verwendet persistentDataPath werden soll.

Überprüfen Sie, wo sich der Ordnerpfad befindet, um die Datei zu speichern

Den Application.persistentDataPath Ordnerpfad der Daten, die dieses Mal verwendet werden sollen, können Sie mit abrufen. Lassen Sie uns zunächst zeigen, wo sich der Standort befindet.

Start Lassen Sie uns eine Methode erstellen, um einen Wert in einem Textfeld anzuzeigen.

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class ButtonEvent : MonoBehaviour
{
  // 省略

  /// <summary>パステキスト。</summary>
  [SerializeField] Text TextPath;


  /// <summary>最初に一度だけ呼ばれます。</summary>
  private void Start()
  {
    TextPath.text = Application.persistentDataPath;
  }

  // 省略
}

Wenn Sie es ausführen, sollten Sie den Pfad auf der Unterseite sehen.

Da wir dieses Mal unter Windows laufen, sieht der Pfad wie folgt aus. Bitte beachten Sie, dass sich der Inhalt des Pfades je nach ausführendem Benutzer und "Firmenname" bzw. "Produktname" in den Projekteinstellungen ändern kann. Wenn du ein Spiel erstellst, entscheide dich vor der Veröffentlichung des Spiels für "Firmenname" und "Produktname" und ändere es später nicht.

Dieser Pfad hängt von der Plattform ab, auf der Sie ausgeführt werden. Unten ist der Pfad, der auf der offiziellen Website aufgeführt ist. Es kann sich je nach Ihrer Version von Unity ändern, also stellen Sie sicher, dass Sie es ausführen und ausprobieren.

Speichern Sie den Wert

Solange Sie sich für den Zielpfad entscheiden, kann das Schreiben und Lesen von Daten von der .NET-Standardbibliothek verarbeitet werden. Dieses Mal kombinieren wir die Daten in einer Klasse und schreiben Zeichenfolgen in JSON und Zeichenfolgen in großen Mengen.

using System;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.UI;

public class ButtonEvent : MonoBehaviour
{
  // 省略

  /// <summary>セーブデータ。</summary>
  public class SaveData
  {
    public string Name;
    public string HP;
    public string Attack;
    public string Money;
  }

  /// <summary>
  /// 保存ボタンをクリックしたときの処理。
  /// </summary>
  public void OnClickSave()
  {
    // 保存するデータを作成
    var data = new SaveData()
    {
      Name = InputFieldName.text,
      HP = InputFieldHP.text,
      Attack = InputFieldAttack.text,
      Money = InputFieldMoney.text,
    };

    // オブジェクトを JSON 文字列にシリアライズ
    var json = JsonUtility.ToJson(data);

    // 所定の場所にテキストファイルとして保存
    File.WriteAllText(Path.Combine(Application.persistentDataPath, "SaveData.txt"), json);

    Debug.Log("保存しました。");
  }

  // 省略
}

Der Inhalt der vorherigen Tipps wird von der .NET Standard-Bibliothek unterstützt, daher glaube ich nicht, dass es etwas besonders Schwieriges gibt. Lassen Sie es uns zuerst ausführen und speichern.

Wenn Sie sich den Pfad ansehen, werden Sie sehen, dass die Datei gespeichert ist.

Wenn Sie die Textdatei öffnen, können Sie sehen, dass Ihre Eingabe im JSON-Format gespeichert ist.

Wir verwenden eine Klasse, damit wir dieses Mal problemlos Dateien schreiben können File , aber es gibt kein Problem,StreamWriter wenn wir andere Klassen wie .

Abrufen eines gespeicherten Werts

Ich glaube auch nicht, dass es schwer zu lesen ist.

/// <summary>
/// 読み込みボタンをクリックしたときの処理。
/// </summary>
public void OnClickLoad()
{
  // 保存されているテキストファイルを読み込む
  var json = File.ReadAllText(Path.Combine(Application.persistentDataPath, "SaveData.txt"));

  // JSON テキストから指定したオブジェクトにデシリアライズ
  var data = JsonUtility.FromJson<SaveData>(json);

  // 読み込んだ値を各フィールドにセット
  InputFieldName.text = data.Name;
  InputFieldHP.text = data.HP;
  InputFieldAttack.text = data.Attack;
  InputFieldMoney.text = data.Money;

  Debug.Log("読み込みました。");
}

Sie können den gespeicherten Text lesen und die JSON-Zeichenfolge mit der JsonUtility.FromJson Methode zum Wiederherstellen deserialisieren.

Versuchen Sie, das Spiel zu starten, und sehen Sie, dass das Eingabefeld ausgefüllt ist, indem Sie auf die Schaltfläche Aus leerem Laden klicken.

Zusammenfassung

Application.persistentDataPath Ich war in der Lage, Daten an den angegebenen Speicherort zu lesen und zu schreiben, indem ich . Es kann als Datei gespeichert werden, so dass es auch möglich ist, große Datenmengen zu speichern. Daten, die in diesem Ordnerpfad gespeichert sind, können jedoch in mehreren Umgebungen synchronisiert werden, sodass Wenn Sie davon ausgehen, sollten Sie sich überlegen, ob Sie eine große Datei oder an einem anderen Ort speichern möchten.