الوقت غير المتدرّج
جزء من قسم إنشاء ألعاب حقيقية في رحلة Unity على Coddy. الدرس 36 من 60.
تظل اللعبة المتوقفة مؤقتًا أو المُبطأة بحاجة إلى ساعة حقيقية لبعض الأمور: قائمة إيقاف مؤقت تتحرك رسومها، وعدّ تنازلي قبل استئناف اللعب، وتجميد يجب أن ينتهي تلقائيًا. تمثل Time.unscaledDeltaTime الزمن الحقيقي منذ الإطار السابق، مهما كانت قيمة Time.timeScale، وتمثل Time.unscaledTime الزمن الحقيقي منذ بدء اللعبة. تدير قائمة الإيقاف المؤقت هذه عجلة التحميل باستخدام الزمن الحقيقي، لذا تدور العجلة أثناء إيقاف اللعبة مؤقتًا:
void Update()
{
wheel.Rotate(0f, 0f, -180f * Time.unscaledDeltaTime); // نصف دورة في الثانية، سواء كان متوقفًا مؤقتًا أم لا
}تستخدم الروتينات المشتركة الزوج نفسه. يحسب WaitForSeconds زمن اللعبة، لذا عند Time.timeScale = 0 لا ينتهي أبدًا؛ أما WaitForSecondsRealtime فيحسب الثواني الحقيقية. عند بدء تشغيل هذا الروتين المشترك عند فتح القائمة، يومض عنوان القائمة كل نصف ثانية:
IEnumerator Blink()
{
while (true)
{
title.SetActive(!title.activeSelf);
yield return new WaitForSecondsRealtime(0.5f);
}
}استخدم القيم المُقاسة لزمن اللعبة للعب، الذي ينبغي أن يتوقف عندما تتوقف اللعبة، واستخدم القيم غير المُقاسة لما يجب أن يستمر أثناء الإيقاف المؤقت أو الإبطاء: القوائم ورسومها المتحركة والمؤقتات التي تنهي الإيقاف المؤقت. لا يوجد إصدار من Invoke يعمل بالزمن الحقيقي: فهو يحسب زمن اللعبة دائمًا.
التحدي
متوسطأضف إيقافًا لحظيًا للسندان: تتجمد اللعبة بأكملها للحظة عند سقوطه.
- في
Anvil.cs، اكتبIEnumerator HitStop():Time.timeScale = 0f;، ثمyield return new WaitForSecondsRealtime(freezeTime);، ثم أعد تعيينها إلى1f. - اكتب
void OnCollisionEnter(Collision collision)بحيث تستدعيStartCoroutine(HitStop());.
اضغط على «العب» وأسقط السندان باستخدام مفتاح المسافة: يؤدي كل ارتطام إلى تجميد اللعبة لمدة 0.3 ثانية. ثم اضغط على «تحقق».
جرّب بنفسك
using System.Collections;
using UnityEngine;
public class Anvil : MonoBehaviour
{
public float freezeTime = 0.3f;
// أوقف اللعبة مؤقتًا لمدة freezeTime ثانية حقيقية عندما يصطدم السندان بشيء ما
}
جميع دروس إنشاء ألعاب حقيقية
4المشاهد والمستويات
تحميل مشهدإعادة تشغيل المستوىالمستوى التاليالاحتفاظ بالبيانات بين المشاهدمراجعة: اختيار المستوى10مشروع: لعبة منصات ثلاثية الأبعاد
المسارمنصات متحركة2الأزرار والشاشات
الأزرار وonClickالتعبيرات Lambdaالربط في Inspectorتشغيل اللوحات وإيقافهاأشرطة الصحةمراجعة: متجر الترقيات5الحفظ باستخدام PlayerPrefs
حفظ رقمالتحميل بقيمة افتراضيةأعلى نتيجةحفظ الإعداداتمراجعة: العملات في البنك6مشروع: عدّاء لا نهاية له
ثلاثة مساراتعقبات أمامكتدرّب بنفسك: Playground لـ Unity