Zapisovanie údajov do odporúčanej cesty k priečinku Unity určenej perzistentným DataPath

Stránka aktualizovaná :
Dátum vytvorenia strany :

Prostredie overovania

Windows
  • Windows 11
Editor jednoty
  • 2021.3.3f1
Vstupný systémový balík
  • 1.3.0

Predpoklady pre tento tip

Nasledujúce nastavenia boli vykonané vopred ako predpoklad pre popis tohto tipu.

Najskôr

V predchádzajúcich tipochPlayerPrefs sme použili spôsob ukladania a načítania údajov. To však nie je vhodné na použitie z hľadiska spracovania obrovských dát a zdieľania dát.

Tentokrát uložíme a načítame údaje do adresára lokálnych priečinkov. V zásade môžete ľubovoľne určiť miesto písania, ale výhodnejšie je použiť zadané persistentDataPath v Unity, takže tentoraz to použijeme.

Umiestnenie a manipulácia používateľského rozhrania

Na tento účel použijeme predchádzajúci tip "Čítajte a zapisujte údaje pomocou prehrávača PlayerPrefs" tak, ako je, takže Odvolajte sa na to a implementujte ho do bodu, keď môžete vykonať spracovanie tlačidiel.

Mimochodom, umiestnim aj miesto na zobrazenie hodnoty, ktorá sa má tentoraz použiť persistentDataPath .

Skontrolujte, kam sa má uložiť cesta k priečinku

Cestu k priečinku údajov, ktoré sa majú tentoraz použiť, môžete získať Application.persistentDataPath pomocou súboru . Najprv si ukážeme, kde sa nachádza.

Start Vytvorme metódu na zobrazenie hodnoty v textovom 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;
  }

  // 省略
}

Keď ho spustíte, mali by ste vidieť cestu na spodnej strane.

Keďže tentoraz bežíme na Windows, cesta vyzerá takto. Upozorňujeme, že obsah cesty sa môže meniť v závislosti od vykonávajúceho používateľa a "CompanyName" alebo "ProductName" v nastaveniach projektu. Pri vytváraní hry sa pred vydaním hry rozhodnite pre "CompanyName" a "ProductName" a neskôr ich nemeňte.

Táto cesta závisí od platformy, na ktorej bežíte. Nižšie je uvedená cesta uvedená na oficiálnych webových stránkach. Môže sa meniť v závislosti od vašej verzie Unity, takže ju nezabudnite spustiť a skontrolovať.

Uložte hodnotu

Pokiaľ sa rozhodnete pre cieľovú cestu, zápis a čítanie údajov môže byť spracované štandardnou knižnicou .NET. Tentokrát kombinujeme údaje do jednej triedy a píšeme reťazce v JSON a píšeme reťazce hromadne.

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 predchádzajúcich tipov je podporovaný knižnicou .NET Standard Library, takže si nemyslím, že je niečo obzvlášť ťažké. Poďme to najprv spustiť a uložiť.

Ak sa pozriete na umiestnenie cesty, uvidíte, že súbor je uložený.

Keď otvoríte textový súbor, môžete vidieť, že vstup je uložený vo formáte JSON.

Používame triedu, aby sme tentoraz mohli File ľahko písať súbory, ale nie je problém, ak použijeme iné triedy,StreamWriter ako napríklad .

Získanie uloženej hodnoty

Nemyslím si, že je ťažké čítať.

/// <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("読み込みました。");
}

Uložený text môžete prečítať a deserializovať reťazec JSON pomocou JsonUtility.FromJson metódy na jeho obnovenie.

Skúste spustiť hru a kliknutím na tlačidlo Načítať od prázdna uvidíte, že vstupné pole je vyplnené.

Súhrn

Application.persistentDataPath Bol som schopný čítať a zapisovať údaje na určené miesto pomocou . Môže byť uložený ako súbor, takže je tiež možné ukladať obrovské dáta. Údaje uložené v tejto ceste k priečinku však môžu byť synchronizované vo viacerých prostrediach, takže Ak to predpokladáte, mali by ste zvážiť, či chcete uložiť veľký súbor alebo ho uložiť na iné miesto.