Écrire des données dans le chemin de dossier recommandé par Unity spécifié par persistentDataPath
Environnement de vérification
- Windows
-
- Fenêtres 11
- Éditeur Unity
-
- 2021.3.3f1
- Package système d’entrée
-
- 1.3.0
Conditions préalables à cette astuce
Les paramètres suivants ont été définis à l’avance comme prémisse pour la description de cette astuce.
Au début
Dans les conseils précédents, PlayerPrefs
nous avons utilisé la méthode d’enregistrement et de chargement des données.
Cependant, cela ne convient pas à une utilisation du point de vue du traitement d’énormes données et du partage de données.
Cette fois, nous allons enregistrer et charger les données dans le répertoire du dossier local.
Fondamentalement, vous pouvez spécifier l’emplacement d’écriture librement, mais il est plus avantageux d’utiliser le spécifié persistentDataPath
dans Unity, donc cette fois, nous allons l’utiliser.
Placement et gestion de l’interface utilisateur
Pour cela, nous utiliserons l’astuce précédente « Lire et écrire des données à l’aide de PlayerPrefs » telle quelle, donc Veuillez vous y référer et l’implémenter au point où vous pouvez effectuer un traitement des boutons.
Incidemment, je vais également placer un endroit pour afficher la valeur de à utiliser persistentDataPath
cette fois.
Vérifier où se trouve le chemin d’accès au dossier pour enregistrer le fichier
Vous pouvez obtenir le chemin d’accès Application.persistentDataPath
au dossier des données à utiliser cette fois avec . Tout d’abord, montrons où se trouve l’emplacement.
Start
Créons une méthode pour afficher une valeur dans un champ de texte.
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;
}
// 省略
}
Lorsque vous l’exécutez, vous devriez voir le chemin sur le dessous.
Puisque nous fonctionnons sous Windows cette fois, le chemin ressemble à ceci. Veuillez noter que le contenu du chemin peut changer en fonction de l’utilisateur exécutant et de « CompanyName » ou « ProductName » dans les paramètres du projet. Lors de la création d’un jeu, choisissez « CompanyName » et « ProductName » avant la sortie du jeu et ne le modifiez pas plus tard.
Ce chemin dépend de la plate-forme sur laquelle vous exécutez. Vous trouverez ci-dessous le chemin indiqué sur le site officiel. Il peut changer en fonction de votre version de Unity, alors assurez-vous de l’exécuter et de le vérifier.
Enregistrer la valeur
Tant que vous décidez du chemin de destination, l’écriture et la lecture des données peuvent être gérées par la bibliothèque standard .NET. Cette fois, nous combinons les données en une seule classe et écrivons des chaînes en JSON et écrivons des chaînes en vrac.
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("保存しました。");
}
// 省略
}
Le contenu des conseils précédents est pris en charge par la bibliothèque standard .NET, donc je ne pense pas qu’il y ait quelque chose de particulièrement difficile. Exécutons-le d’abord et enregistrons-le.
Si vous regardez l’emplacement du chemin, vous verrez que le fichier est enregistré.
Lorsque vous ouvrez le fichier texte, vous pouvez voir que votre entrée est enregistrée au format JSON.
Nous utilisons une classe afin de pouvoir File
écrire facilement des fichiers cette fois,StreamWriter
mais il n’y a pas de problème si nous utilisons d’autres classes telles que .
Obtenir une valeur sauvegardée
Je ne pense pas que ce soit difficile à lire non plus.
<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("読み込みました。");
}
Vous pouvez lire le texte enregistré et désérialiser la chaîne JSON avec la JsonUtility.FromJson
méthode pour la restaurer.
Essayez d’exécuter le jeu et voyez que le champ de saisie est rempli en cliquant sur le bouton Charger à partir de vide.
Résumé
Application.persistentDataPath
J’ai pu lire et écrire des données à l’emplacement spécifié à l’aide de .
Il peut être enregistré sous forme de fichier, il est donc également possible de stocker des données volumineuses.
Toutefois, les données stockées dans ce chemin d’accès au dossier peuvent être synchronisées dans plusieurs environnements, de sorte que
Si vous supposez cela, vous devez déterminer s’il faut enregistrer un fichier volumineux ou l’enregistrer dans un autre emplacement.