שמרו את הריצה הטובה ביותר
חלק מהיחידה ארכיטקטורת משחקים ב-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טיפוסי Enum ב־Inspectorחזרה: טבלת שללהגרלת השלל10פרויקט: שורדים בזירה
הגיבורסוגי אויבים2ממשקים ב-Unity
IDamageableממשקים ו-TryGetComponentGetComponentsסיכום: מקש אינטראקציהסיכום: הקרוב ביותר בטווחתרגלו בעצמכם: Unity אונליין