تحديث الحالة مرة واحدة، اشتقاق العرض
عندما يتم جمع عملة معدنية، قم بتحديث model.score في حدث اللعبة أو خطوة المحاكاة. عند نقطة تحديث واجهة المستخدم، اعرض القيمة المعروضة من model.score بدلاً من إضافة قيمة منفصلة إلى التسمية. بالنسبة إلى DOM HUD، قم بتحديث textContent عندما تتغير القيمة؛ بالنسبة للوحة HUD القماشية، ارسم الرقم من نفس حقل النموذج. يمكن أن يتحرك العد المرئي نحو النتيجة المسجلة.
استخدم انتقالًا واحدًا للأحداث التي تؤثر على عدة تسميات. إذا أدى فقدان الحياة أيضًا إلى إيقاف التشغيل مؤقتًا وفتح لوحة، فقم بتسجيل تغيير الحالة مرة واحدة، ثم دع العرض يعكس الحياة والحالة والإجراءات المتاحة معًا. تجنب جعل رد اتصال اللوحة يغير بشكل مستقل نفس المتغيرات التي قام معالج التصادم بتغييرها بالفعل.
اختبار التحديثات السريعة والحالات النهائية
قم بتشغيل عمليتي التقاط في تتابع سريع وتأكد من أن شاشة HUD تعرض الإجمالي الناتج بدلاً من تخطي التحديث. توقف مؤقتًا، وانتهي من التشغيل، ثم أعد التشغيل؛ تأكد من توقف المؤقت، وتبقى النتيجة النهائية مرئية في الوقت المحدد لها، وتبدأ الجولة التالية من قيمها المحددة. إذا كنت تستخدم requestAnimationFrame للعرض، فتعامل معه كجدول عرض: تلاحظ MDN أن رد الاتصال الخاص بها هو لقطة واحدة ويجب طلبه مرة أخرى لإطار آخر، لذا احتفظ بانتقالات الحالة خارج التعليمات البرمجية التي يتم تشغيلها عن طريق الخطأ مرتين لكل إطار.
قلّل تحديثات العرض غير الضرورية
بالنسبة لنص DOM، قارن القيمة المنسقة التالية بالقيمة الحالية قبل الكتابة إذا كانت التحديثات متكررة. بالنسبة للوحة HUD القماشية، يمكنك الرسم الجماعي بعد المحاكاة بدلاً من رسم تسمية واحدة من كل رد اتصال للحدث. أضف قراءة تصحيح الأخطاء للنموذج بجوار شاشة HUD المرئية أثناء التطوير؛ إذا اختلفت هذه القيم، يكون الخطأ في العرض، بينما تشير مطابقة القيم ذات النتيجة الخاطئة إلى تحديث النموذج.
أسئلة عن مزامنة لعبة HUD
هل يجب تحديث علامة النتيجة داخل معالج التصادم؟
يمكن للمعالج تحديث حالة النتيجة المعتمدة؛ دع مسار عرض واحدًا ينسّق هذه الحالة ويعرضها. تجنّب الاحتفاظ في التسمية بنتيجة ثانية تزداد بصورة مستقلة.
لماذا يُظهر HUD قيمة من التشغيل السابق؟
قد تؤدي إعادة التشغيل إلى إعادة تعيين حالة المحاكاة دون تشغيل عرض HUD، أو قد تحتوي اللوحة على نسخة قديمة. قم بإعادة ضبط النموذج من خلال عملية انتقال واحدة وعرض الحالة الجديدة على الفور.
للمزيد من القراءة
هل لاحظت معلومة قديمة؟ الإبلاغ عن تصحيح