Menu
CoddyTech

שרוד

חלק מהיחידה ארכיטקטורת משחקים ב-Unity במסלול ה-Unity של Coddy. שיעור 47 מתוך 50.

challenge icon

אתגר

בינוני

השלב האחרון: הריצה מסתיימת, והריצה הטובה ביותר נשמרת. שמור על כל מה שנעשה בשיעורים הקודמים. בקנבס יש GameOverPanel מוסתר עם ResultText,‏ BestText ו-RestartButton שכותרתו Fight again, ולאובייקט GameManager יש את הסקריפט GameManager שלך, עם hero,‏ spawner,‏ gameOverPanel,‏ resultText,‏ bestText ו-restartButton מוגדרים ב-Inspector.

  • ל-Hero נוסף public event Action Died, שמופעל כשהבריאות שלו מגיעה ל-0, אחרי שהוא מכבה את עצמו.
  • ב-GameManager.cs, הוסף מחלקה [System.Serializable] בשם BestRun עם public int wave ו-public int kills.
  • GameManager מאזין לאירוע Died של הגיבור ולאירוע Enemy.Died, שסופר את ההריגות בריצה הנוכחית: הירשם לאירועים ב-OnEnable ובטל את ההרשמה ב-OnDisable. ב-Start הוא טוען את הריצה הטובה ביותר מהקובץ best.json שב-Application.persistentDataPath באמצעות JsonUtility, אם הקובץ קיים, מסתיר את הלוח ומגדיר את restartButton כך שיפעיל מחדש את המשחק.
  • כשהגיבור מת, עצור את המשחק (Time.timeScale 0). נתוני הריצה הם ה-Wave של ה-spawner ומספר ההריגות. זוהי תוצאה חדשה וטובה ביותר אם הגיבור הגיע לגל גבוה יותר, או לאותו גל עם יותר הריגות: במקרה כזה היא הופכת לתוצאה הטובה ביותר ונשמרת בקובץ best.json באמצעות JsonUtility.ToJson. הצג את נתוני הריצה ב-resultText, כך: Wave 2, 7 kills, ואת התוצאה הטובה ביותר ב-bestText, כך: Best: wave 3, 12 kills, ואז הצג את הלוח.
  • ההפעלה מחדש מחזירה את קנה המידה של הזמן ל-1 וטוענת שוב את הסצנה.

לחץ על Play והילחם עד שתיפול, ואז נסה לשבור את השיא שלך. לאחר מכן לחץ על Check.

נסו בעצמכם

using UnityEngine;

public class GameManager : MonoBehaviour
{
    // שיעור מאוחר יותר ישלים את החלק הזה: סיום הריצה והריצה הטובה ביותר.
}

כל השיעורים ביחידה ארכיטקטורת משחקים ב-Unity