Rakstiet datus uz Unity ieteikto mapes ceļu, ko norādījis persistentDataPath

Lapa atjaunota :
Lapas izveides datums :

Verifikācijas vide

Windows
  • Operētājsistēmā Windows 11
Vienotības redaktors
  • 2021.3.3f1
Ievades sistēmas pakete
  • 1.3.0

Priekšnoteikumi šim padomam

Tālāk norādītie iestatījumi ir veikti iepriekš kā priekšnoteikums šī padoma aprakstam.

Sākumā

Iepriekšējos padomosPlayerPrefs mēs izmantojām datu saglabāšanas un ielādes metodi. Tomēr tas nav piemērots lietošanai no milzīgu datu apstrādes un datu kopīgošanas viedokļa.

Šoreiz mēs saglabāsim un ielādēsim datus vietējo mapju direktorijā. Būtībā jūs varat brīvi norādīt rakstīšanas vietu, taču ir izdevīgāk izmantot Unity norādīto persistentDataPath , tāpēc šoreiz mēs to izmantosim.

UI izvietošana un apstrāde

Šim nolūkam mēs izmantosim iepriekšējo padomu "Lasīt un rakstīt datus, izmantojot PlayerPrefs", kā tas ir, tāpēc Lūdzu, atsaucieties uz to un ieviesiet to līdz vietai, kur varat veikt pogu apstrādi.

Starp citu, es arī izvietošu vietu, kur parādīt vērtību, kas šoreiz tiks izmantota persistentDataPath .

Pārbaudiet, kur ir mapes ceļš, lai saglabātu failu

Varat iegūt to datu mapes ceļu, Application.persistentDataPath kurus šoreiz izmantosiet ar . Pirmkārt, parādīsim, kur atrodas atrašanās vieta.

Start Izveidosim metodi vērtības parādīšanai teksta laukā.

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

  // 省略
}

Kad jūs to palaižat, jums vajadzētu redzēt ceļu apakšpusē.

Tā kā mēs šoreiz darbojamies operētājsistēmā Windows, ceļš izskatās šādi. Lūdzu, ņemiet vērā, ka ceļa saturs var mainīties atkarībā no izpildītāja lietotāja un "CompanyName" vai "ProductName" projekta iestatījumos. Veidojot spēli, izlemiet par "CompanyName" un "ProductName" pirms spēles izlaišanas un nemainiet to vēlāk.

Šis ceļš ir atkarīgs no platformas, kurā darbojaties. Zemāk ir ceļš, kas norādīts oficiālajā vietnē. Tas var mainīties atkarībā no jūsu Unity versijas, tāpēc noteikti palaidiet to un pārbaudiet to.

Saglabāt vērtību

Kamēr izlemjat par mērķa ceļu, .NET standarta bibliotēka var apstrādāt rakstīšanas un lasīšanas datus. Šoreiz mēs apvienojam datus vienā klasē un rakstām virknes JSON un rakstām virknes vairumā.

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

  // 省略
}

Iepriekšējo padomu saturu atbalsta .NET standarta bibliotēka, tāpēc es nedomāju, ka ir kaut kas īpaši grūts. Vispirms palaidīsim to un saglabāsim.

Ja paskatās uz ceļa atrašanās vietu, jūs redzēsiet, ka fails ir saglabāts.

Atverot teksta failu, var redzēt, ka ievade ir saglabāta JSON formātā.

Mēs izmantojam klasi, lai šoreiz varētu File viegli rakstīt failus, taču nav problēmu, ja mēs izmantojam citas klases, piemēram,StreamWriter .

Iegūstiet saglabātu vērtību

Es arī nedomāju, ka to ir grūti lasīt.

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

Jūs varat izlasīt saglabāto tekstu un deserializēt JSON virkni ar metodi, JsonUtility.FromJson kā to atjaunot.

Mēģiniet palaist spēli un redzēt, ka ievades lauks ir aizpildīts, noklikšķinot uz pogas Ielādēt no tukšas.

Kopsavilkuma

Application.persistentDataPath Es varēju lasīt un rakstīt datus norādītajā vietā, izmantojot . To var saglabāt kā failu, tāpēc ir iespējams saglabāt arī milzīgus datus. Tomēr šajā mapes ceļā saglabātie dati var tikt sinhronizēti vairākās vidēs, tāpēc Ja jūs to pieņemat, jums vajadzētu apsvērt, vai saglabāt lielu failu vai saglabāt to citā vietā.