Undopro هو نظام تراجع قائم على الأوامر مدمج في النظام الافتراضي للوحدة. هذا يسمح لـ Devs باستخدام الإجراءات لعمليات التراجع عنهم دون إجبار المستخدم على تدفق جديد!
موضوع المنتدى
اعتمادًا على الطريقة التي ترغب في استخدامها Undopropro / توزيع أداتك ، لديك العديد من الخيارات.
توفر الوحدة فقط معلومات محدودة للغاية حول نظام التراجع:
داخليًا ، يقوم Undopro بإنشاء سجل وهمية في النظام الافتراضي عند استدعاء API لإضافة سجل قائم على الأوامر. ثم يتم تتبع ذلك باستخدام رد الاتصال المتاح ويتم تنفيذ الأوامر عند التبديل من مكدس التراجع أو العكس على التوالي. كان القطر الكبير هو سلوك نظام التراجع الافتراضي: إنه لا يمكن التنبؤ به تقريبًا! قد تكرر السجلات في ظروف معينة عند التراجع عن/إعادة التخلص منها ، أو تختفي. إنه أمر صعب للغاية ، ولكن هناك شرط لجعل خوارزمية تتبع صلبة. من الواضح أن إضافة سجلات جديدة يجب اكتشافها أيضًا.
عند الانتهاء من التتبع ، يتم حساب قيمة التحول لكل من التراجع وإعادة المكدس بشكل منفصل (تذكر ، قد تتلاشى السجلات أو تكرارها أثناء التراجع/Redo!). ثم يتم تحديث السجلات الداخلية وفقًا لذلك ويتم تحديد السجلات للتراجع عن/إعادة.
في طريق كل هذا ، يتم استدعاء عمليات الاسترداد الإضافية onundophformed/onRedOperformed/onaddundorecord.
يعد التسلسل أيضًا مشكلة كبيرة ، حيث يصعب إجراء تصرفات مجهولة ، وأسوأ من ذلك التسلسلية. يحافظ Undopro على GameObject الخفي المؤقت في المشهد الحالي والذي يحمل جميع السجلات المخصصة التي تحتاج إلى التسلسل. يتم تحقيق التسلسل من قبل بعض فئات التفاف التي تتعامل بذكاء مع كل مجموعة للأفعال ، والكائنات ، والأساليب ، إلخ.
يمكن استخدام هذا النظام عمومًا! -> يدعم جميع الكائنات القابلة للتسلسل (من كل من UnityEngine.Object و System.Object) والكائنات التي لا يمكن التالي جزئيًا (تسلسل واحد من الأعضاء القابل للتسلسل) ، تتخلف جميع الكائنات الأخرى -> تدعم حتى معظم الإجراءات المجهولة (لا يوجد عثر عليها بعد)! يمكنك استخدام السياق والرجوع تقريبًا جميع المتغيرات المحلية تقريبًا (تنطبق الشروط المذكورة أعلاه)!
يبدو هذا النظام موثوقًا به ، لكنني لا أدعي أنه مقاوم تمامًا! أسوأ حالة يمكن أن تحدث عندما تفسد التتبع هي أن سجلاتك تقابلها كمية صغيرة (يتم تنفيذ الإجراءات سجل أو اثنين بعد/قبل). لا يوجد حاليًا أي موقف معروف لحسن الحظ ، لكنني لا أتحمل أي مسؤولية عن أي إخفاقات! إذا تمكنت من كسرها ، فيرجى إبلاغي بها وتزويدني بمعلومات عما فعلته (من خلال القضايا) وأحاول إصلاح هذا :)
ما عليك سوى وضع مجلد Undopros في مكان ما في مشروعك وأنت على ما يرام! على الرغم من أنه لا يجب أن يكون في مجلد المحرر ، فهذا لا يعني أنه يمكنك استخدامه في وقت التشغيل! يتم استبعاد الوظائف التي تتطلب واجهة برمجة تطبيقات المحرر في وقت التشغيل بواسطة الشيكات قبل المعالج. في مجلد المحرر من ناحية أخرى ، تجد نوافذ مفيدة لاختبار وظائف 1. نظام التراجع نفسه و 2. نظام التسلسل الإجراء. جنبا إلى جنب مع هذه النوافذ ، يمكنك تصحيح النظام بسهولة بنفسك لترى كيف يعمل عن طريق عدم تحديد #Define undo_debug في Undopromanager! من أجل استخدام نظام التسلسل الإجراء لمشروعك الخاص ، فقط نسخ المجلد undopro/serializableaction مع ترخيص بالطبع!
واجهة برمجة التطبيقات للمطورين بسيطة للغاية. أضف التبعية undopro ثم استخدم Undopromanager للتفاعل مع النظام. عناصر مهمة:
التوصية: إذا قمت بحساب شيء ما أو قمت بأي عملية بنتيجة وسيطة ، فمن السهل جدًا إعداد هذا شريطة أن تكون النتيجة قابلة للتسلسل. بدلاً من إعادة حساب في إجراءات التراجع/REDO ، حدد فقط النتيجة التسلسلية السابقة في اتخاذ إجراء التراجع والذات الجديدة في إجراء Redo. منتهي!
تم إنشاء هذا التمديد من قبل Seneral وتم نشره بموجب ترخيص معهد ماساتشوستس للتكنولوجيا (تم تحديده في الترخيص. MD)