將數據寫入由持久數據路徑指定的 Unity 推薦資料夾路徑
驗證環境
- 窗戶
-
- 視窗 11
- 統一編輯器
-
- 2021.3.3f1
- 輸入系統包
-
- 1.3.0
此提示的先決條件
作為此提示描述的前提,已預先進行了以下設置。
起先
在前面的提示中,PlayerPrefs
我們使用了保存和載入數據的方法。
但是,從處理海量數據和數據共用的角度來看,這並不適合使用。
這一次,我們將保存數據並將其載入到本地資料夾目錄。
基本上,您可以自由指定寫入位置,但是在Unity中使用指定的 persistentDataPath
位置更有利,因此這次我們將使用它。
UI 放置和處理
為此,我們將按原樣使用前面的提示“使用 PlayerPrefs 讀取和寫入數據”,因此 請參考該內容並將其實現到可以執行按鈕處理的程度。
順便說一下,我還會放置一個地方來顯示這次要使用的 persistentDataPath
值。
檢查資料夾路徑以儲存檔案的位置
您可以取得 Application.persistentDataPath
這次要使用的資料夾路徑。 首先,讓我們顯示位置在哪裡。
Start
讓我們創建一個在文字欄位中顯示值的方法。
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;
}
// 省略
}
運行它時,您應該看到底部的路徑。
由於我們這次在 Windows 上運行,因此路徑如下所示。 請注意,路徑的內容可能會根據執行使用者和項目設置中的「公司名稱」或「產品名稱」而變化。 創建遊戲時,請在遊戲發佈前確定「公司名稱」和「產品名稱」,以後不要更改。
此路徑取決於您正在運行的平臺。 以下是官方網站上列出的路徑。 它可能會根據您的 Unity 版本而更改,因此請務必運行它並檢查它。
保存值
只要確定目標路徑,.NET 標準庫就可以處理數據的寫入和讀取。 這一次,我們將數據合併到一個類中,並在 JSON 中寫入字串並批量寫入字串。
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 標準庫支援前面提示的內容,因此我認為沒有什麼特別困難的。 讓我們先運行它並保存它。
如果您查看路徑位置,您將看到檔已保存。
打開文字檔時,可以看到輸入以 JSON 格式保存。
我們正在使用一個類,以便這次可以輕鬆編寫檔,File
StreamWriter
但是如果我們使用其他類(例如.
獲取保存的值
我認為閱讀也不難。
<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("読み込みました。");
}
您可以讀取儲存的文字並使用還原它的方法反 JsonUtility.FromJson
序列化 JSON 字串。
嘗試運行遊戲,並通過按兩下從空載入按鈕來查看輸入欄位是否已填充。
總結
Application.persistentDataPath
我能夠使用.
它可以保存為檔,因此也可以存儲大量數據。
但是,存儲在此資料夾路徑中的數據可能會在多個環境中同步,因此
如果您假設這一點,則應考慮是保存大文件還是將其保存在其他位置。