Rakstiet datus uz Unity ieteikto mapes ceļu, ko norādījis persistentDataPath
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ā.