Zápis dat do doporučené cesty ke složce Unity určené pomocí persistentDataPath
Ověřovací prostředí
- Windows
-
- Systém Windows 11
- Editor jednoty
-
- 2021.3.3f1
- Vstupní systémový balíček
-
- 1.3.0
Předpoklady pro tento tip
Následující nastavení byla provedena předem jako předpoklad pro popis tohoto tipu.
Nejprve
V předchozích tipechPlayerPrefs
jsme použili metodu ukládání a načítání dat.
To však není vhodné pro použití z hlediska manipulace s obrovskými daty a jejich sdílení.
Tentokrát uložíme a načteme data do adresáře místních složek.
V zásadě můžete určit místo psaní volně, ale je výhodnější použít specifikované persistentDataPath
v Unity, takže tentokrát použijeme toto.
Umístění a zpracování uživatelského rozhraní
K tomu použijeme předchozí tip "Číst a zapisovat data pomocí PlayerPrefs" tak, jak je, takže Prosím, podívejte se na to a implementujte to do bodu, kdy můžete provádět zpracování tlačítek.
Mimochodem, umístím také místo, kde se zobrazí hodnota, která bude persistentDataPath
použita tentokrát.
Zkontrolujte, kde je cesta ke složce pro uložení souboru
Můžete získat Application.persistentDataPath
cestu ke složce dat, která mají být použita tentokrát s programem . Nejprve ukažme, kde je umístění.
Start
Pojďme vytvořit metodu pro zobrazení hodnoty v textovém poli.
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;
}
// 省略
}
Když jej spustíte, měli byste vidět cestu na spodní straně.
Vzhledem k tomu, že tentokrát běžíme na Windows, cesta vypadá takto. Vezměte prosím na vědomí, že obsah cesty se může změnit v závislosti na vykonávajícím uživateli a "CompanyName" nebo "ProductName" v nastavení projektu. Při vytváření hry se rozhodněte o "CompanyName" a "ProductName" před vydáním hry a neměňte je později.
Tato cesta závisí na platformě, na které běžíte. Níže je uvedena cesta uvedená na oficiálních stránkách. Může se změnit v závislosti na vaší verzi Unity, takže ji nezapomeňte spustit a zkontrolovat.
Uložte hodnotu
Pokud se rozhodnete pro cílovou cestu, zápis a čtení dat může zpracovávat standardní knihovna .NET. Tentokrát kombinujeme data do jedné třídy a zapisujeme řetězce ve formátu JSON a zapisujeme řetězce hromadně.
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("保存しました。");
}
// 省略
}
Obsah předchozích tipů je podporován standardní knihovnou .NET, takže si nemyslím, že je něco zvlášť obtížného. Pojďme to nejprve spustit a uložit.
Pokud se podíváte na umístění cesty, uvidíte, že soubor je uložen.
Když otevřete textový soubor, uvidíte, že váš vstup je uložen ve formátu JSON.
Používáme třídu, abychom tentokrát mohli File
snadno psát soubory, ale není problém, pokud použijeme jiné třídy,StreamWriter
jako je .
Získání uložené hodnoty
Nemyslím si, že je těžké to číst.
<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("読み込みました。");
}
Můžete si přečíst uložený text a deserializovat řetězec JSON pomocí JsonUtility.FromJson
metody pro jeho obnovení.
Zkuste spustit hru a zjistit, zda je vstupní pole vyplněno, kliknutím na tlačítko Načíst z prázdného místa.
Shrnutí
Application.persistentDataPath
Byl jsem schopen číst a zapisovat data do zadaného umístění pomocí .
Lze jej uložit jako soubor, takže je také možné ukládat obrovská data.
Data uložená v této cestě ke složce však mohou být synchronizována ve více prostředích, takže
Pokud předpokládáte, měli byste zvážit, zda uložit velký soubor nebo jej uložit do jiného umístění.