Menu
CoddyTech

Hayatta Kal

Coddy'nin Unity Journey'sinin Unity'de Oyun Mimarisi bölümünün bir parçası. Ders 47 / 50.

challenge icon

Görev

Orta

Son adım: oyun sona erer ve en iyi koşu saklanır. Önceki derslerdeki her şeyi koru. Canvas'ta gizli bir GameOverPanel bulunur; içinde ResultText, BestText ve Fight again etiketi taşıyan bir RestartButton vardır. GameManager nesnesinde ise GameManager betiğin bulunur; Inspector'da hero, spawner, gameOverPanel, resultText, bestText ve restartButton ayarlanmıştır.

  • Hero, canı 0'a ulaştığında kendini devre dışı bıraktıktan sonra tetiklenen public event Action Died olayını alır.
  • GameManager.cs dosyasına, public int wave ve public int kills alanlarına sahip [System.Serializable] bir BestRun sınıfı ekle.
  • GameManager, kahramanın Died olayını ve bu koşudaki öldürmeleri sayan Enemy.Died olayını dinler: OnEnable içinde abone ol, OnDisable içinde abonelikten çık. Start içinde, dosya mevcutsa Application.persistentDataPath içindeki best.json dosyasından en iyi koşuyu JsonUtility ile yükler, paneli gizler ve restartButton düğmesinin oyunu yeniden başlatmasını sağlar.
  • Kahraman öldüğünde oyunu durdur (Time.timeScale 0). Koşu sonucu, spawner'ın Wave değeri ve öldürme sayısıdır. Daha yüksek bir dalgaya ulaştıysa veya aynı dalgada daha fazla öldürme yaptıysa yeni bir rekor olur: bu durumda yeni sonucu en iyi olarak kaydet ve JsonUtility.ToJson ile best.json dosyasına yaz. Koşu sonucunu resultText içinde Wave 2, 7 kills biçiminde, en iyi sonucu ise bestText içinde Best: wave 3, 12 kills biçiminde göster, ardından paneli göster.
  • Yeniden başlatma, zaman ölçeğini tekrar 1 yapar ve sahneyi yeniden yükler.

Play düğmesine bas ve düşene kadar savaş; ardından kendi rekorunu geçmeye çalış. Sonra Check düğmesine bas.

Kendin dene

using UnityEngine;

public class GameManager : MonoBehaviour
{
    // Daha sonraki bir derste burası doldurulacak: koşunun bitişi ve en iyi koşu.
}

Unity'de Oyun Mimarisi bölümündeki tüm dersler