Kirjutage andmed Unity soovitatud kaustateele, mille on määranud persistentDataPath
Kontrollimise keskkond
- Windows
-
- Windows 11
- Ühtsuse toimetaja
-
- 2021.3.3f1
- Sisendsüsteemi pakett
-
- 1.3.0
Selle näpunäite eeltingimused
Selle vihje kirjeldamise eelduseks on eelnevalt tehtud järgmised sätted.
Alguses
Eelmistes nõuandetesPlayerPrefs
kasutasime andmete salvestamise ja laadimise meetodit.
Kuid see ei sobi kasutamiseks tohutute andmete käitlemise ja andmete jagamise seisukohast.
Seekord salvestame ja laadime andmed kohaliku kausta kataloogi.
Põhimõtteliselt saate kirjutamiskoha vabalt määrata, kuid soodsam on kasutada Unitys määratud persistentDataPath
asukohta, nii et seekord kasutame seda.
Kasutajaliidese paigutamine ja käitlemine
Selleks kasutame eelmist näpunäidet "Lugege ja kirjutage andmeid PlayerPrefs'i abil", nagu see on, nii et Palun vaadake seda ja rakendage see punktini, kus saate nuppe töödelda.
Muuseas, panen ka koha, kus näidata seekord kasutatava persistentDataPath
väärtust.
Kontrollige, kus on faili salvestamiseks kausta tee
Saate vaadata Application.persistentDataPath
nende andmete kaustateed, mida seekord kasutada operatsioonisüsteemiga . Esiteks näitame, kus asukoht on.
Start
Loome meetodi väärtuse kuvamiseks tekstiväljal.
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;
}
// 省略
}
Kui te seda käivitate, peaksite nägema teed alumisel küljel.
Kuna seekord töötab Windowsis, näeb tee välja selline. Pange tähele, et tee sisu võib muutuda sõltuvalt käivitavast kasutajast ja projekti seadetes "Ettevõtte nimi" või "Tootenimi". Mängu loomisel otsustage enne mängu vabastamist "Ettevõtte nimi" ja "Tootenimi" ning ärge seda hiljem muutke.
See tee sõltub platvormist, millel töötate. Allpool on ametlikul veebisaidil loetletud tee. See võib muutuda sõltuvalt teie Unity versioonist, nii et käivitage see kindlasti ja kontrollige seda.
Salvestage väärtus
Niikaua kui otsustate sihtkoha marsruudi, saab kirjutamise ja lugemise andmeid käsitleda .NET standardteegis. Seekord ühendame andmed ühte klassi ja kirjutame JSON-is stringe ning kirjutame stringe hulgi.
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("保存しました。");
}
// 省略
}
Eelmiste näpunäidete sisu toetab .NET Standard Library, nii et ma ei usu, et seal on midagi eriti rasket. Käivitame selle kõigepealt ja salvestame selle.
Kui vaatate tee asukohta, näete, et fail on salvestatud.
Tekstifaili avamisel näete, et teie sisend on salvestatud JSON-vormingus.
Kasutame klassi, et saaksime File
seekord hõlpsalt faile kirjutada, kuid pole probleemi, kui kasutame teisi klasse,StreamWriter
näiteks .
Hankige salvestatud väärtus
Ma ei usu, et seda on ka raske lugeda.
<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("読み込みました。");
}
Salvestatud teksti saate lugeda ja JSON-stringi deserialiseerida selle taastamise meetodiga JsonUtility.FromJson
.
Proovige mängu käivitada ja näha, et sisendväli on täidetud, klõpsates nuppu Laadi tühjast.
Kokkuvõte
Application.persistentDataPath
Suutsin lugeda ja kirjutada andmeid määratud asukohta, kasutades .
Seda saab salvestada failina, seega on võimalik salvestada ka tohutuid andmeid.
Sellele kaustateele salvestatud andmeid võib siiski sünkroonida mitmes keskkonnas, nii et
Kui eeldate seda, peaksite kaaluma, kas salvestada suur fail või salvestada see teise asukohta.