كتابة البيانات إلى مسار المجلد الموصى به ل 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 تمكنت من قراءة البيانات وكتابتها إلى الموقع المحدد باستخدام . يمكن حفظه كملف ، لذلك من الممكن أيضا تخزين بيانات ضخمة. ومع ذلك ، قد تتم مزامنة البيانات المخزنة في مسار المجلد هذا في بيئات متعددة ، لذلك إذا افترضت ذلك ، يجب أن تفكر فيما إذا كنت تريد حفظ ملف كبير أو حفظه في موقع آخر.