Įrašykite duomenis į "Unity" rekomenduojamą aplanko kelią, nurodytą persistentDataPath
Tikrinimo aplinka
- Windows
-
- Langai 11
- "Unity" redaktorius
-
- 2021.3.3F1
- Įvesties sistemos paketas
-
- 1.3.0
Būtinos šio patarimo sąlygos
Šie nustatymai buvo atlikti iš anksto kaip šio patarimo aprašymo prielaida.
Iš pradžių
Ankstesniuose patarimuosePlayerPrefs
naudojome duomenų išsaugojimo ir įkėlimo metodą.
Tačiau tai nėra tinkama naudoti didelių duomenų tvarkymo ir dalijimosi duomenimis požiūriu.
Šį kartą išsaugosime ir įkelsime duomenis į vietinio aplanko katalogą.
Iš esmės rašymo vietą galite nurodyti laisvai, tačiau naudingiau naudoti nurodytą persistentDataPath
"Unity", todėl šį kartą tai naudosime.
UI išdėstymas ir tvarkymas
Tam naudosime ankstesnį patarimą "Skaityti ir rašyti duomenis naudojant" PlayerPrefs ", koks jis yra, taigi Peržiūrėkite tai ir įgyvendinkite jį tiek, kad galėtumėte atlikti mygtukų apdorojimą.
Beje, aš taip pat pastatysiu vietą, kurioje bus rodoma vertė, kuri bus naudojama persistentDataPath
šį kartą.
Patikrinkite, kur yra aplanko kelias failui išsaugoti
Šį kartą naudojamų duomenų aplanko Application.persistentDataPath
kelią galite gauti naudodami . Pirmiausia parodykime, kur yra vieta.
Start
Sukurkime metodą, kaip rodyti reikšmę teksto lauke.
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;
}
// 省略
}
Kai jį paleisite, turėtumėte pamatyti kelią apačioje.
Kadangi šį kartą veikiame "Windows", kelias atrodo taip. Atkreipkite dėmesį, kad kelio turinys gali keistis priklausomai nuo vykdančiojo vartotojo ir "Įmonės pavadinimas" arba "Produkto pavadinimas" projekto nustatymuose. Kurdami žaidimą, nuspręskite dėl "CompanyName" ir "ProductName" prieš išleidžiant žaidimą ir vėliau jo nekeiskite.
Šis kelias priklauso nuo platformos, kurioje veikiate. Žemiau yra kelias, nurodytas oficialioje svetainėje. Jis gali keistis priklausomai nuo jūsų "Unity" versijos, todėl būtinai paleiskite ją ir patikrinkite.
Išsaugokite vertę
Kol nuspręsite dėl paskirties kelio, duomenų rašymą ir skaitymą gali tvarkyti .NET standartinė biblioteka. Šį kartą mes sujungiame duomenis į vieną klasę ir rašome eilutes JSON ir rašome eilutes masiškai.
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("保存しました。");
}
// 省略
}
Ankstesnių patarimų turinį palaiko .NET standartinė biblioteka, todėl nemanau, kad yra kažkas ypač sudėtingo. Pirmiausia paleiskime jį ir išsaugokime.
Jei pažvelgsite į kelio vietą, pamatysite, kad failas išsaugotas.
Kai atidarote tekstinį failą, matote, kad jūsų įvestis išsaugota JSON formatu.
Mes naudojame klasę, kad šį kartą galėtume File
lengvai rašyti failus, tačiau nėra jokių problemų, jei naudosime kitas klases,StreamWriter
tokias kaip .
Gaukite sutaupytą vertę
Nemanau, kad ir sunku skaityti.
<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("読み込みました。");
}
Galite perskaityti išsaugotą tekstą ir deserializuoti JSON eilutę naudodami metodą, JsonUtility.FromJson
kaip jį atkurti.
Pabandykite paleisti žaidimą ir pamatyti, kad įvesties laukas užpildytas spustelėję mygtuką Įkelti iš tuščio.
Suvestinė
Application.persistentDataPath
Galėjau skaityti ir rašyti duomenis į nurodytą vietą naudodamas .
Jis gali būti išsaugotas kaip failas, todėl taip pat galima saugoti didžiulius duomenis.
Tačiau šiame aplanko kelyje saugomi duomenys gali būti sinchronizuojami keliose aplinkose, todėl
Jei manote, kad taip, turėtumėte apsvarstyti, ar įrašyti didelį failą, ar išsaugoti jį kitoje vietoje.