Napišite podatke na priporočeno pot mape Unity, ki jo določa persistentDataPath

Stran posodobljena :
Datum ustvarjanja strani :

Okolje za preverjanje

Windows
  • Windows 11
Urejevalnik enotnosti
  • 2021.3.3f1
Paket vhodnega sistema
  • 1.3.0

Predpogoji za to konico

Naslednje nastavitve so bile vnaprej narejene kot predpostavka za opis tega namiga.

Sprva

V prejšnjih nasvetih smo PlayerPrefs uporabili metodo shranjevanja in nalaganja podatkov. Vendar pa to ni primerno za uporabo z vidika obravnavanja ogromnih podatkov in izmenjave podatkov.

Tokrat bomo podatke shranili in naložili v imenik lokalnih map. V bistvu lahko prosto določite mesto pisanja, persistentDataPath vendar je ugodneje uporabiti navedeno v Enotnosti, zato bomo tokrat uporabili to.

Postavitev in ravnanje z UI

Za to bomo uporabili prejšnji namig "Branje in pisanje podatkov s programom PlayerPrefs", tako da Poglejte si to in ga implementirate do točke, kjer lahko izvajate obdelavo gumbov.

Mimogrede, bom tudi mesto persistentDataPath za prikaz vrednosti, ki se uporablja tokrat.

Preverite, kje je pot mape za shranjevanje datoteke

Lahko dobiš pot Application.persistentDataPath mape podatkov, ki se uporabljajo tokrat z . Najprej pokažimo, kje je lokacija.

Start Ustvarimo metodo za prikaz vrednosti v besedilnem polju.

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

  // 省略
}

Ko jo zaženete, morate videti pot na spodnji strani.

Ker se tokrat izvajamo v sistemu Windows, je pot videti tako. Upoštevajte, da se vsebina poti lahko spremeni glede na izvršitvenega uporabnika in »Ime podjetja« ali »ProductName« v nastavitvah projekta. Pri ustvarjanju igre se pred začetkom igre odločite za »Ime podjetja« in »ProductName« in je pozneje ne spremenite.

Ta pot je odvisna od platforme, na kateri tečete. Spodaj je pot navedena na uradni spletni strani. Lahko se spremeni glede na vašo različico Unity, zato se prepričajte, da ga zaženete in preverite.

Shranjevanje vrednosti

Če se odločite za ciljno pot, lahko s pisanjem in branjem podatkov ravna standardna knjižnica .NET. Tokrat združujemo podatke v en razred in pišemo nize v JSON in pišemo nize v razsutem stanju.

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

  // 省略
}

Vsebino prejšnjih nasvetov podpira .NET Standardna knjižnica, zato menim, da ni nič posebej težkega. Najprej ga zaženimo in shranimo.

Če pogledate mesto poti, boste videli, da je datoteka shranjena.

Ko odprete besedilno datoteko, lahko vidite, da je vnos shranjen v formatu JSON.

Uporabljamo razred File , da lahko tokrat enostavno pišemo datoteke,StreamWriter vendar ni težav, če uporabljamo druge razrede, kot so .

Shranjevanje vrednosti

Tudi jaz mislim, da ni težko brati.

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

Shranjeno besedilo lahko preberete in deserializirate niz JSON JsonUtility.FromJson z metodo, da ga obnovite.

Poskusite zaganjati igro in videti, da je vnosno polje izpolnjeno s klikom na Nalaganje iz praznega gumba.

Povzetek

Application.persistentDataPath Lahko sem bral in pisal podatke na določeno mesto z uporabo . Shranite ga lahko kot datoteko, zato je mogoče shraniti tudi ogromne podatke. Vendar pa se lahko podatki, shranjeni v tej poti mape, sinhronizirajo v več okoljih, zato Če predpostavljate, razmislite o tem, ali želite shraniti veliko datoteko ali jo shraniti na drugem mestu.