Scrieți datele în calea folderului recomandată de Unity, specificată de persistentDataPath

Pagina actualizată :
Data creării paginii :

Mediul de verificare

Windows
  • Ferestre 11
Unity Editor
  • 2021.3.3F1
Pachet sistem de intrare
  • 1.3.0

Cerințe preliminare pentru acest sfat

Următoarele setări au fost făcute în avans ca premisă pentru descrierea acestui sfat.

La început

În sfaturile anterioare, PlayerPrefs am folosit metoda de salvare și încărcare a datelor. Cu toate acestea, acest lucru nu este potrivit pentru utilizare din punctul de vedere al manipulării datelor uriașe și al schimbului de date.

De data aceasta, vom salva și încărca date în directorul de foldere locale. Practic, puteți specifica locația de scriere în mod liber, dar este mai avantajos să utilizați specificat persistentDataPath în Unity, așa că de data aceasta vom folosi acest lucru.

Plasarea și manipularea interfeței de utilizare

Pentru aceasta, vom folosi sfatul anterior "Citiți și scrieți date folosind PlayerPrefs" așa cum este, deci Vă rugăm să consultați acest lucru și să îl implementați până la punctul în care puteți efectua procesarea butoanelor.

De altfel, voi plasa și un loc pentru a afișa valoarea care urmează să fie folosită persistentDataPath de data aceasta.

Verificați unde este calea folderului pentru a salva fișierul

Puteți obține calea folderului Application.persistentDataPath datelor care vor fi utilizate de data aceasta cu . În primul rând, să arătăm unde este locația.

Start Să creăm o metodă de afișare a unei valori într-un câmp de text.

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

  // 省略
}

Când îl rulați, ar trebui să vedeți calea pe partea inferioară.

Deoarece rulăm pe Windows de data aceasta, calea arată astfel. Vă rugăm să rețineți că conținutul căii se poate modifica în funcție de utilizatorul executant și de "CompanyName" sau "ProductName" din setările proiectului. Când creați un joc, decideți "CompanyName" și "ProductName" înainte de lansarea jocului și nu îl schimbați mai târziu.

Această cale depinde de platforma pe care rulați. Mai jos este calea listată pe site-ul oficial. Se poate schimba în funcție de versiunea ta de Unity, așa că asigură-te că o rulezi și verific-o.

Salvați valoarea

Atâta timp cât decideți calea de destinație, scrierea și citirea datelor pot fi gestionate de biblioteca standard .NET. De data aceasta, combinăm datele într-o singură clasă și scriem șiruri în JSON și scriem șiruri în bloc.

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("保存しました。");
  }

  // 省略
}

Conținutul sfaturilor anterioare este acceptat de biblioteca standard .NET, deci nu cred că este ceva deosebit de dificil. Să o rulăm mai întâi și să o salvăm.

Dacă vă uitați la locația căii, veți vedea că fișierul este salvat.

Când deschideți fișierul text, puteți vedea că intrarea este salvată în format JSON.

Folosim o clasă, astfel încât să putem File scrie cu ușurință fișiere de data aceasta, dar nu există nicio problemă dacă folosim alte clase,StreamWriter cum ar fi .

Obțineți o valoare salvată

Nici nu cred că este dificil de citit.

/// <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("読み込みました。");
}

Puteți citi textul salvat și deserializa șirul JSON cu metoda de JsonUtility.FromJson restaurare a acestuia.

Încercați să rulați jocul și să vedeți că câmpul de introducere este populat făcând clic pe butonul Încărcare din gol.

Rezumat

Application.persistentDataPath Am putut citi și scrie date în locația specificată folosind . Poate fi salvat ca fișier, deci este posibilă și stocarea unor date uriașe. Cu toate acestea, datele stocate în această cale folder pot fi sincronizate în mai multe medii, deci Dacă presupuneți acest lucru, ar trebui să luați în considerare dacă să salvați un fișier mare sau să îl salvați într-o altă locație.