שרוד
חלק מהיחידה ארכיטקטורת משחקים ב-Unity במסלול ה-Unity של Coddy. שיעור 47 מתוך 50.
אתגר
בינוניהשלב האחרון: הריצה מסתיימת, והריצה הטובה ביותר נשמרת. שמור על כל מה שנעשה בשיעורים הקודמים. בקנבס יש 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.timeScale0). נתוני הריצה הם ה-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
1רכיבים, לא היררכיות
רכיבים קטניםסקריפט בסיס לאויברכיבים מופשטיםרכיבים שעובדים יחדסיכום: צריח מודולרי