Gravar dados no caminho de pasta recomendado do Unity especificado por persistentDataPath
Ambiente de verificação
- Windows
-
- Janelas 11
- Unity Editor
-
- 2021.3.3f1
- Pacote do sistema de entrada
-
- 1.3.0
Pré-requisitos para esta dica
As configurações a seguir foram feitas com antecedência como premissa para a descrição desta dica.
Inicialmente
Nas dicas anteriores, PlayerPrefs
usamos o método de salvar e carregar dados.
No entanto, isso não é adequado para uso do ponto de vista de lidar com dados enormes e compartilhamento de dados.
Desta vez, vamos salvar e carregar dados para o diretório da pasta local.
Basicamente, você pode especificar o local de escrita livremente, mas é mais vantajoso usar o especificado persistentDataPath
em Unity, então desta vez usaremos isso.
Posicionamento e manipulação da interface do usuário
Para isso, usaremos a dica anterior "Ler e gravar dados usando o PlayerPrefs" como está, então Por favor, refira-o e implemente-o até o ponto em que você pode executar o processamento de botões.
Aliás, também vou colocar um lugar para mostrar o valor de ser usado persistentDataPath
desta vez.
Verifique onde está o caminho da pasta para salvar o arquivo
Você pode obter o Application.persistentDataPath
caminho da pasta dos dados a serem usados desta vez com o . Primeiro, vamos mostrar onde está o local.
Start
Vamos criar um método para exibir um valor em um campo de texto.
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;
}
// 省略
}
Ao executá-lo, você deve ver o caminho na parte inferior.
Como estamos executando no Windows desta vez, o caminho se parece com este. Observe que o conteúdo do caminho pode mudar dependendo do usuário em execução e "CompanyName" ou "ProductName" nas configurações do projeto. Ao criar um jogo, decida sobre "CompanyName" e "ProductName" antes do jogo ser lançado e não o altere mais tarde.
Esse caminho depende da plataforma em que você está executando. Veja abaixo o caminho listado no site oficial. Ele pode mudar dependendo da sua versão do Unity, então certifique-se de executá-lo e verificá-lo.
Salve o valor
Contanto que você decida sobre o caminho de destino, a gravação e a leitura de dados podem ser manipuladas pela biblioteca padrão do .NET. Desta vez, estamos combinando os dados em uma classe e escrevendo cadeias de caracteres em JSON e escrevendo cadeias de caracteres em massa.
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("保存しました。");
}
// 省略
}
O conteúdo das dicas anteriores é suportado pela Biblioteca Padrão do .NET, portanto, não acho que haja nada particularmente difícil. Vamos executá-lo primeiro e salvá-lo.
Se você observar o local do caminho, verá que o arquivo foi salvo.
Quando você abre o arquivo de texto, você pode ver que sua entrada é salva no formato JSON.
Estamos usando uma classe para que possamos File
facilmente escrever arquivos desta vez, mas não há problema se usarmos outras classes,StreamWriter
como .
Obtenha um valor economizado
Também não acho difícil de ler.
<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("読み込みました。");
}
Você pode ler o texto salvo e desserializar a cadeia de caracteres JSON com o JsonUtility.FromJson
método para restaurá-la.
Tente executar o jogo e ver que o campo de entrada está preenchido clicando no botão Carregar de vazio.
Resumo
Application.persistentDataPath
Consegui ler e gravar dados no local especificado usando o .
Ele pode ser salvo como um arquivo, por isso também é possível armazenar dados enormes.
No entanto, os dados armazenados nesse caminho de pasta podem ser sincronizados em vários ambientes, portanto,
Se você assumir isso, você deve considerar se deseja salvar um arquivo grande ou salvá-lo em outro local.