احتفظ بأفضل جولة
جزء من قسم هندسة الألعاب في Unity في رحلة Unity على Coddy. الدرس 60 من 64.
اكتملت Arena Survivor: عدو مجرد Enemy بنوعين، وIDamageable لكل ضربة، وموجات من ScriptableObject، وعناصر التقاط خلف واجهة، وHUD يكتفي بالاستماع، وأخيرًا حفظ بصيغة JSON لأفضل جولة.
التحدي
متوسطاحتفظ بأفضل نتيجة في best.json.
- في
GameManager.cs، أضف صنفًا[System.Serializable]باسمBestRun، يحتوي على عددين صحيحين عامّين هماwaveوkills. - يحمّل
Startالبيانات منbest.jsonفيApplication.persistentDataPathباستخدامJsonUtility، إذا كان الملف موجودًا. - عند انتهاء اللعبة، تصبح الموجة الأعلى، أو الموجة نفسها مع عدد أكبر من عمليات القتل، هي الأفضل وتُحفَظ؛ ويعرض
bestTextالنصBest: wave 3, 12 kills.
اضغط «العب» ودع شخصيتك تسقط مرتين: ستبقى أفضل نتيجة كما هي. ثم اضغط «تحقق».
جرّب بنفسك
using System.IO;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using TMPro;
public class GameManager : MonoBehaviour
{
[SerializeField] private Hero hero;
[SerializeField] private WaveSpawner spawner;
[SerializeField] private GameObject gameOverPanel;
[SerializeField] private TMP_Text resultText;
[SerializeField] private TMP_Text bestText;
[SerializeField] private Button restartButton;
private int kills;
void OnEnable()
{
hero.Died += GameOver;
Enemy.Died += CountKill;
}
void OnDisable()
{
hero.Died -= GameOver;
Enemy.Died -= CountKill;
}
void Start()
{
gameOverPanel.SetActive(false);
restartButton.onClick.AddListener(Restart);
}
void CountKill(Enemy enemy)
{
kills++;
}
void GameOver()
{
Time.timeScale = 0f;
int wave = spawner.Wave;
resultText.text = "Wave " + wave + ", " + kills + " kills";
gameOverPanel.SetActive(true);
}
void Restart()
{
Time.timeScale = 1f;
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس هندسة الألعاب في Unity
1المكوّنات، لا التسلسلات الهرمية
مكوّنات صغيرةنص برمجي أساسي للعدومكوّنات مجرّدةالمكوّنات تعمل معًامراجعة: برج معياريمراجعة: مدفع مزدوج4البيانات المُسلسلة
الأصناف القابلة للتسلسلالقوائم في Inspectorالتعدادات في Inspectorمراجعة: جدول الغنائممراجعة: اختيار الغنائم عشوائيًا7آلات الحالات
الحالات كأصنافحالة التنبيهآلة حالاتالانتقالاتعقول الأعداءالفارس يهاجممراجعة: حالات الباب10مشروع: ناجي الساحة
البطلأنواع الأعداء2الواجهات في Unity
IDamageableالواجهات وTryGetComponentGetComponentsمراجعة: مفتاح التفاعلمراجعة: أقرب عنصر ضمن النطاقتدرّب بنفسك: Playground لـ Unity