Kirjoita tiedot Unityn suosittelemaan kansiopolkuun, jonka persistentDataPath määrittää
Varmennusympäristö
- Windows
-
- Windows 11
- Unity-editori
-
- 2021.3.3F1
- Syöttöjärjestelmän paketti
-
- 1.3.0
Tämän vinkin edellytykset
Seuraavat asetukset on tehty etukäteen tämän vinkin kuvauksen lähtökohtana.
Alun perin
Edellisissä vinkeissäPlayerPrefs
käytimme tietojen tallennus- ja latausmenetelmää.
Tämä ei kuitenkaan sovellu käytettäväksi valtavan datan käsittelyn ja datan jakamisen näkökulmasta.
Tällä kertaa tallennamme ja lataamme tiedot paikalliseen kansiohakemistoon.
Periaatteessa voit määrittää kirjoituspaikan vapaasti, mutta on edullisempaa käyttää Unityssa määritettyä persistentDataPath
, joten tällä kertaa käytämme tätä.
Käyttöliittymän sijoittelu ja käsittely
Tätä varten käytämme edellistä vinkkiä "Lue ja kirjoita tietoja PlayerPrefsin avulla" sellaisenaan, joten Katso se ja toteuta se siihen pisteeseen, jossa voit suorittaa painikkeiden käsittelyn.
Laitan muuten myös paikan, jossa voin näyttää arvon käytettäväksi persistentDataPath
tällä kertaa.
Tarkista, missä kansiopolku on tiedoston tallentamista varten
Voit saada Application.persistentDataPath
tällä kertaa käytettävien tietojen kansiopolun . Näytetään ensin, missä sijainti on.
Start
Luodaan menetelmä arvon näyttämiseksi tekstikentässä.
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;
}
// 省略
}
Kun suoritat sen, sinun pitäisi nähdä polku alapuolella.
Koska olemme tällä kertaa Windowsissa, polku näyttää tältä. Huomaa, että polun sisältö voi muuttua suorittavan käyttäjän ja projektin asetusten "CompanyName" tai "ProductName" mukaan. Kun luot peliä, päätä "CompanyName" ja "ProductName" ennen pelin julkaisemista äläkä muuta sitä myöhemmin.
Tämä polku riippuu alustasta, jolla käytät. Alla on polku, joka on lueteltu virallisella verkkosivustolla. Se voi muuttua Unityn version mukaan, joten muista suorittaa se ja tarkistaa se.
Tallenna arvo
Niin kauan kuin päätät kohdepolun, .NET-standardikirjasto voi käsitellä tietojen kirjoittamista ja lukemista. Tällä kertaa yhdistämme tiedot yhdeksi luokaksi ja kirjoitamme merkkijonoja JSONissa ja kirjoitamme merkkijonoja irtotavarana.
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("保存しました。");
}
// 省略
}
.NET-standardikirjasto tukee edellisten vinkkien sisältöä, joten en usko, että mitään erityisen vaikeaa on. Suoritetaan se ensin ja tallennetaan se.
Jos tarkastelet polun sijaintia, näet, että tiedosto on tallennettu.
Kun avaat tekstitiedoston, näet, että syötteesi on tallennettu JSON-muodossa.
Käytämme luokkaa, jotta voimme File
helposti kirjoittaa tiedostoja tällä kertaa, mutta ei ole mitään ongelmaa, jos käytämme muita luokkia,StreamWriter
kuten .
Hanki tallennettu arvo
En usko, että sitä on myöskään vaikea lukea.
<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("読み込みました。");
}
Voit lukea tallennetun tekstin ja poistaa JSON-merkkijonon JsonUtility.FromJson
sarjoituksen palautusmenetelmällä.
Yritä suorittaa peli ja tarkistaa, että syöttökenttä on täytetty, napsauttamalla Lataa tyhjästä -painiketta.
Yhteenveto
Application.persistentDataPath
Pystyin lukemaan ja kirjoittamaan tietoja määritettyyn sijaintiin käyttämällä .
Se voidaan tallentaa tiedostona, joten on myös mahdollista tallentaa valtavia tietoja.
Tähän kansiopolkuun tallennetut tiedot voidaan kuitenkin synkronoida useissa ympäristöissä, joten
Jos oletat tämän, sinun kannattaa harkita, tallennetaanko suuri tiedosto vai tallennetaanko se toiseen sijaintiin.