خوانندهٔ سیو یونیتی آنلاین (PlayerPrefs و YAML)

یونیتی مقدارهای سادهٔ بازی را در PlayerPrefs نگه می‌دارد و بقیهٔ وضعیت را در فایل‌های متنی YAML. روی ویندوز PlayerPrefs زیر کلید شرکت و بازی در رجیستری می‌نشیند؛ با regedit آن شاخه را به فایل ‎.reg‎ صادر می‌کنید و همین‌جا باز می‌شود. روی اندروید همان مقدارها در پوشهٔ shared_prefs و فایل XML هم‌نام پکیج هستند و با یک فایل XML روبرویید. ابزار نوع هر مقدار را از خود فایل می‌خواند، نه از حدس: dword رجیستری عدد صحیح است و مقدار علامت‌دارش هم نشان داده می‌شود، چهار بایت hex یک ممیز ۳۲ بیتی little-endian است، ‎hex(b)‎ عدد ۶۴ بیتی و ‎hex(2)‎ متن UTF-16 است؛ هر چیز دیگری به‌صورت بایت می‌ماند تا اشتباه خوانده نشود. فایل‌های YAML یونیتی (‎.asset‎، ‎.prefab‎، ‎.unity‎ و ‎.meta‎) هم سند به سند باز می‌شوند: کلاس، fileID، فیلدها، بردارها و ارجاع‌های ‎{fileID: …}‎ را می‌بینید. این ابزار فقط می‌خواند؛ چیزی ویرایش یا دوباره کدگذاری نمی‌شود و خروجی یک فایل JSON است. هیچ فایلی آپلود نمی‌شود و همه‌چیز در مرورگر اجرا می‌شود.

این ابزار مستقیماً در مرورگر شما اجرا می‌شود. هیچ داده‌ای به سرور ارسال نمی‌شود.

نحوه استفاده

  1. 1

    فایل رجیستری ‎.reg‎، فایل ‎shared_prefs‎ اندروید یا یک فایل YAML یونیتی را در کادر رها کنید؛ اگر فایل ندارید، یکی از سه نمونهٔ آماده را باز کنید.

  2. 2

    قالب تشخیص‌داده‌شده و جدول کلیدها را ببینید؛ با جست‌وجو مستقیم سراغ یک کلید یا مقدار بروید و در فایل YAML سندها را باز کنید.

  3. 3

    با دکمهٔ «دانلود JSON» همان داده را برای مقایسه یا پشتیبان‌گیری بگیرید؛ فایل اصلی دست‌نخورده می‌ماند.

پرسش‌های پرتکرار

PlayerPrefs ویندوز را از کجا پیدا کنم؟

در regedit به مسیر HKEY_CURRENT_USER\Software بروید و شاخهٔ شرکت و بعد بازی را پیدا کنید. روی همان شاخه راست‌کلیک کنید و Export بزنید؛ فایل ‎.reg‎ ساخته می‌شود و همین‌جا باز می‌شود. اگر بازی از PlayerPrefs.SetInt و SetFloat استفاده کرده باشد، نوع‌ها همان dword و چهار بایت hex هستند.

چرا مقدار ممیز کمی عجیب است؟

یونیتی ممیز را ۳۲ بیتی ذخیره می‌کند و یک عدد مثل ۰٫۸ در نمایش ۳۲ بیتی دقیقاً همان ۰٫۸ نیست. ابزار مقدار را با هفت رقم معنادار نشان می‌دهد تا همان چیزی را ببینید که بازی می‌بیند، و بایت‌های خام را هم کنارش می‌گذارد.

آیا مقدارها را می‌شود ویرایش کرد؟

در این نسخه نه. خواندن امن‌تر است: فایل دست‌نخورده می‌ماند و خروجی JSON برای مقایسه، مستندسازی یا پشتیبان‌گیری است. ویرایش PlayerPrefs باید در جای خودش و با ابزار همان پلتفرم انجام شود.

چه فایل‌های YAML یونیتی پشتیبانی می‌شوند؟

فایل‌های ‎.asset‎، ‎.prefab‎، ‎.unity‎ و ‎.meta‎ که با هدر ‎%YAML‎ یا با نشانگر سند ‎!u!‎ شروع می‌شوند. پارسر فقط زیرمجموعه‌ای را می‌خواند که خود یونیتی می‌نویسد: نقشه‌ها، فهرست‌ها، براکت‌های ‎{}‎ و ‎[]‎ و مقدارهای ساده. هر خطی که نفهمد نادیده می‌گیرد و هرگز حدس نمی‌زند؛ عددهای بزرگ‌تر از ۲ به توان ۵۳ هم به‌صورت متن دقیق می‌مانند تا fileID خراب نشود.