Adatok írása a Unity ajánlott mappaútvonalára a persistentDataPath által megadott
Ellenőrzési környezet
- Windows
-
- Windows 11 esetén
- Unity-szerkesztő
-
- 2021.3.3f1
- Bemeneti rendszercsomag
-
- 1.3.0
A tipp előfeltételei
A következő beállításokat előre elvégeztük a tipp leírásának előfeltételeként.
Először
Az előző tippekbenPlayerPrefs
az adatok mentésének és betöltésének módszerét használtuk.
Ez azonban nem alkalmas a hatalmas adatok kezelésére és az adatmegosztásra.
Ezúttal elmentjük és betöltjük az adatokat a helyi mappa könyvtárába.
Alapvetően szabadon megadhatja az írás helyét, de előnyösebb a Unity-ben megadott persistentDataPath
használata, így ezúttal ezt fogjuk használni.
Felhasználói felület elhelyezése és kezelése
Ehhez az előző tippet fogjuk használni: "Adatok olvasása és írása a PlayerPrefs használatával", így Kérjük, olvassa el ezt, és hajtsa végre addig a pontig, ahol elvégezheti a gombok feldolgozását.
Mellesleg elhelyezek egy helyet is, ahol megjelenítem az ezúttal használandó persistentDataPath
értéket.
Ellenőrizze, hogy hol van a mappa elérési útja a fájl mentéséhez
Az ezúttal használni kívánt adatok mappa elérési útját a használatával kaphatja meg Application.persistentDataPath
. Először mutassuk meg, hol van a hely.
Start
Hozzunk létre egy metódust, amely megjelenít egy értéket egy szövegmezőben.
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;
}
// 省略
}
Amikor futtatja, látnia kell az elérési utat az alján.
Mivel ezúttal Windows rendszeren futunk, az elérési út így néz ki. Kérjük, vegye figyelembe, hogy az elérési út tartalma a végrehajtó felhasználótól és a projektbeállításokban szereplő "CompanyName" vagy "ProductName" függvényében változhat. Játék létrehozásakor a játék megjelenése előtt döntse el a "CompanyName" és a "ProductName" elemeket, és később ne módosítsa azt.
Ez az elérési út attól függ, hogy milyen platformon fut. Az alábbiakban a hivatalos weboldalon felsorolt útvonal található. Ez a Unity verziójától függően változhat, ezért feltétlenül futtassa és nézze meg.
Az érték mentése
Ha Ön dönt a célútvonalról, az írási és olvasási adatokat a .NET szabványos könyvtára kezelheti. Ezúttal az adatokat egy osztályba egyesítjük, és sztringeket írunk JSON-ban, és tömegesen írunk sztringeket.
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("保存しました。");
}
// 省略
}
Az előző tippek tartalmát a .NET Standard Library támogatja, így nem hiszem, hogy bármi különösebben nehéz. Először futtassuk, és mentsük el.
Ha megnézi az elérési utat, látni fogja, hogy a fájl mentésre kerül.
A szövegfájl megnyitásakor láthatja, hogy a bemenet JSON formátumban van mentve.
Egy osztályt használunk, hogy ezúttal könnyen írhassunk File
fájlokat, de nincs probléma, ha más osztályokat használunk,StreamWriter
például .
Mentett érték lekérése
Szerintem sem nehéz olvasni.
<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("読み込みました。");
}
Elolvashatja a mentett szöveget, és deszerializálhatja a JSON-sztringet a JsonUtility.FromJson
visszaállítási módszerrel.
Próbálja meg futtatni a játékot, és nézze meg, hogy a beviteli mező ki van-e töltve a Betöltés üresből gombra kattintva.
Összefoglalás
Application.persistentDataPath
Tudtam olvasni és írni az adatokat a megadott helyre a használatával.
Fájlként menthető, így hatalmas adatok tárolására is lehetőség van.
Előfordulhat azonban, hogy az ezen a mappaútvonalon tárolt adatok több környezetben is szinkronizálhatók, így
Ha ezt feltételezi, fontolja meg, hogy nagy fájlt mentsen-e, vagy más helyre mentse.