كتابة البيانات إلى مسار المجلد الموصى به ل Unity المحدد بواسطة PersistentDataPath
بيئة التحقق
- نوافذ
-
- ويندوز ١١
- محرر الوحدة
-
- 2021.3.3f1
- حزمة نظام الإدخال
-
- 1.3.0
المتطلبات الأساسية لهذه النصيحة
تم إجراء الإعدادات التالية مسبقا كمقدمة لوصف هذه النصيحة.
في البداية
في النصائح السابقة ، PlayerPrefs
استخدمنا طريقة حفظ البيانات وتحميلها.
ومع ذلك ، هذا غير مناسب للاستخدام من وجهة نظر التعامل مع البيانات الضخمة ومشاركة البيانات.
هذه المرة ، سنقوم بحفظ البيانات وتحميلها إلى دليل المجلد المحلي.
في الأساس ، يمكنك تحديد موقع الكتابة بحرية ، ولكن من الأفضل استخدام المحدد persistentDataPath
في Unity ، لذلك هذه المرة سنستخدم هذا.
وضع واجهة المستخدم ومعالجتها
لهذا ، سنستخدم النصيحة السابقة "قراءة وكتابة البيانات باستخدام 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 Standard ، لذلك لا أعتقد أن هناك أي شيء صعب بشكل خاص. دعنا نديره أولا ونحفظه.
إذا نظرت إلى موقع المسار ، فسترى أنه تم حفظ الملف.
عند فتح الملف النصي ، يمكنك أن ترى أنه تم حفظ الإدخال بتنسيق 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("読み込みました。");
}
يمكنك قراءة النص المحفوظ وإلغاء تسلسل سلسلة JSON باستخدام JsonUtility.FromJson
طريقة استعادتها.
حاول تشغيل اللعبة ورؤية أن حقل الإدخال يتم ملؤه بالنقر فوق تحميل من فارغ زر.
ملخص
Application.persistentDataPath
تمكنت من قراءة البيانات وكتابتها إلى الموقع المحدد باستخدام .
يمكن حفظه كملف ، لذلك من الممكن أيضا تخزين بيانات ضخمة.
ومع ذلك ، قد تتم مزامنة البيانات المخزنة في مسار المجلد هذا في بيئات متعددة ، لذلك
إذا افترضت ذلك ، يجب أن تفكر فيما إذا كنت تريد حفظ ملف كبير أو حفظه في موقع آخر.