Napišite podatke na priporočeno pot mape Unity, ki jo določa persistentDataPath
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.