Hayatta Kalma Gecesi
Coddy'nin Unity Journey'sinin Gerçek Oyunlar Geliştirmek bölümünün bir parçası. Ders 56 / 56.
Bir kurtulan karanlık bir arazide durur ve yarasalar bütün gece peşine düşer; arazinin dört köşesinden birinden birkaç saniyede bir yeni bir yarasa gelir. Her yarasa doğrudan kurtulana doğru uçar ve ona ilk ulaşan yarasa geceyi sona erdirir. Üstteki bir saat şafağa kalan saniyeleri sayar: O zamana kadar dayanırsan kazanırsın. Duraklat düğmesi her şeyi dondurur ve gece sona erdiğinde Tekrar oyna yeni bir gece başlatır.
Kurtulanı Move eylemiyle yürüten Player betiği yazılmıştır. GameManager ve Bat yaz.
Görev
ZorInspector, GameManager'a nightLength (15), spawnEvery (2), batPrefab, spawnPoints (dört köşe), dawnText, pauseButton, pausePanel, endPanel, endText ve restartButton değerlerini verir.
- Bir singleton'dır (
public static GameManager Instance) ve içindePlaying,Paused,WonveLostdeğerlerini içeren birpublic enum Stateile birpublic State statebulunur. Gece, Playing durumunda başlar. - Playing durumundayken: kalan saniyeler
nightLengthdeğerinden geriye sayar ve yukarı yuvarlanarakDawn in 12biçiminde gösterilir; herspawnEverysaniyede, rastgele seçilenspawnPointsnoktalarından birinde bir yarasa belirir. Süre bittiğinde gece Won olur. pauseButton, Playing durumunu Paused durumuna ve tekrar Playing durumuna geçirir. Paused, oyunun zamanını durdurur (Time.timeScale0) vepausePanelpanelini gösterir; yeniden Playing durumuna geçildiğinde zamanı yeniden başlatır ve paneli gizler. Won veya Lost durumundayken hiçbir şey yapmaz.- Herkese açık
Lose(), Playing durumundaki bir geceyi Lost durumuna geçirir. - Won ve Lost, oyunun zamanını durdurur ve
endPanelpanelini gösterir;endTextmetniYou survived the night!veyaThe bats got youolur. restartButton, sahneyi yeniden yükleyerek yeni bir gece başlatır.
Inspector, Bat'e speed (2) ve reach (1) değerlerini verir. Gece Playing durumundayken yarasa, kendi yüksekliğini koruyarak oyuncuya (Player etiketi verilmiş) speed hızında uçar. Yerdeki düzlemde oyuncuya reach kadar yaklaştığında Lose() çağrısını yapar.
Play'e bas ve şafağa kadar dayanmayı dene, ardından Check'e bas.
Kendin dene
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using TMPro;
public class GameManager : MonoBehaviour
{
public float nightLength = 15f;
public float spawnEvery = 2f;
public GameObject batPrefab;
public Transform[] spawnPoints;
public TMP_Text dawnText;
public Button pauseButton;
public GameObject pausePanel;
public GameObject endPanel;
public TMP_Text endText;
public Button restartButton;
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Gerçek Oyunlar Geliştirmek bölümündeki tüm dersler
1Ekrandaki Metinler
Canvas ve MetinSkoru GösterSayıları BiçimlendirGeri Sayım ZamanlayıcısıTekrar: Hız Göstergesi4Sahneler ve Bölümler
Bir Sahne YüklemeBölümü Yeniden BaşlatmaSonraki BölümSahneler Arasında SaklamaTekrar: Bölüm Seçimi10Proje: 3D Platform Oyunu
ParkurHareketli Platformlar2Düğmeler ve Ekranlar
Düğmeler ve onClickLambda İfadeleriInspector'da Bağlantı KurmaPanelleri Açma ve KapamaCan ÇubuklarıTekrar: Yükseltme Mağazası5PlayerPrefs ile Kaydetme
Bir Sayı KaydetmeVarsayılan Değerle YüklemeEn Yüksek SkorAyarları KaydetmeTekrar: Bankadaki Paralar