Escriviu dades al camí de carpeta recomanat per Unity especificat per persistentDataPath
Entorn de verificació
- Windows
-
- Finestres 11
- Editor d'unitat
-
- 2021.3.3f1
- Paquet del sistema d'entrada
-
- 1.3.0
Requisits previs per a aquest consell
La configuració següent s'ha fet amb antelació com a premissa per a la descripció d'aquest consell.
Al principi
En els consells anteriors, PlayerPrefs
hem utilitzat el mètode de desar i carregar dades.
Tanmateix, això no és adequat per utilitzar-lo des del punt de vista del maneig d'enormes dades i compartició de dades.
Aquesta vegada, guardarem i carregarem dades al directori de carpetes locals.
Bàsicament, podeu especificar la ubicació d'escriptura lliurement, però és més avantatjós utilitzar l'especificat persistentDataPath
a Unity, de manera que aquesta vegada utilitzarem això.
Col·locació i manipulació de la interfície d'usuari
Per a això, utilitzarem el consell anterior "Llegir i escriure dades utilitzant PlayerPrefs" tal com és, així que Si us plau, referiu-vos a això i implementeu-lo fins al punt en què pugueu realitzar el processament de botons.
Per cert, també col·locaré un lloc per mostrar el valor de que s'utilitzarà persistentDataPath
aquesta vegada.
Comproveu on és el camí de la carpeta per desar el fitxer
Podeu obtenir la ruta de carpeta Application.persistentDataPath
de les dades que s'utilitzaran aquesta vegada amb . En primer lloc, mostrem on és la ubicació.
Start
Creem un mètode per mostrar un valor en un camp de text.
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;
}
// 省略
}
Quan l'executeu, hauríeu de veure el camí a la part inferior.
Com que aquesta vegada estem executant a Windows, el camí sembla així. Tingueu en compte que el contingut del camí pot canviar en funció de l'usuari executor i de "NomEmpresa" o "NomProducte" a la configuració del projecte. Quan creeu un joc, decidiu "NomEmpresa" i "NomProducte" abans del llançament del joc i no el canvieu més tard.
Aquest camí depèn de la plataforma en què estigueu executant. A continuació es mostra el camí que apareix al lloc web oficial. Pot canviar en funció de la vostra versió d'Unity, així que assegureu-vos d'executar-lo i comprovar-ho.
Desa el valor
Sempre que decidiu el camí de destinació, les dades d'escriptura i lectura poden ser gestionades per la biblioteca estàndard .NET. Aquesta vegada, combinem les dades en una sola classe i escrivim cadenes en JSON i escrivim cadenes a granel.
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("保存しました。");
}
// 省略
}
El contingut dels consells anteriors està recolzat per la biblioteca estàndard .NET, de manera que no crec que hi hagi res especialment difícil. Executem-lo primer i guardem-lo.
Si mireu la ubicació del camí, veureu que el fitxer està desat.
Quan obriu el fitxer de text, podeu veure que l'entrada es desa en format JSON.
Estem utilitzant una classe perquè puguem File
escriure arxius fàcilment aquesta vegada,StreamWriter
però no hi ha cap problema si utilitzem altres classes com .
Obtenir un valor desat
Tampoc crec que sigui difícil de llegir.
<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("読み込みました。");
}
Podeu llegir el text desat i deserialitzar la cadena JSON amb el JsonUtility.FromJson
mètode per restaurar-la.
Proveu d'executar el joc i veure que el camp d'entrada s'emplena fent clic al botó Carrega des del buit.
Resum
Application.persistentDataPath
Vaig poder llegir i escriure dades a la ubicació especificada utilitzant .
Es pot guardar com a fitxer, de manera que també és possible emmagatzemar dades enormes.
No obstant això, les dades emmagatzemades en aquesta ruta de carpeta es poden sincronitzar en diversos entorns, de manera que
Si assumiu això, hauríeu de considerar si voleu desar un fitxer gran o desar-lo en una altra ubicació.