Menu
CoddyTech

Özet: Tur Yöneticisi

Coddy'nin Unity Journey'sinin Gerçek Oyunlar Geliştirmek bölümünün bir parçası. Ders 16 / 60.

Bu bölüm oyuna bir yönetici verdi: diğerlerinin bir alan olmadan eriştiği bir tekil nesne ve bu nesnenin geçiş yaptığı durumlar. Tur yöneticisi ikisini de kullanır.

challenge icon

Görev

Kolay

Madeni para toplama bölümünü tamamla; SetState yazıldı.

  1. Awake() içinde ayarlanan public static RoundManager Instance; ekle.
  2. Update() içinde state üzerinde switch kullan: Ready, Space tuşunu bekler; Playing, timeLeft değerini geri sayar, ardından bir sonraki Ready durumuna geçer veya son turdan sonra Finished durumuna geçer.
  3. public bool TakeCoin(): yalnızca Playing sırasında say, Coins: 2 değerini göster ve true döndür. Coin.cs, Player'ın dokunduğu ve sayılan bir madeni parayı yok eder.

Üç turun tamamında “Oyna” düğmesine bas. Ardından “Kontrol et” düğmesine bas.

Kendin dene

using UnityEngine;
using TMPro;

public enum RoundState { Ready, Playing, Finished }

public class RoundManager : MonoBehaviour
{
    // singleton: Awake() içinde ayarlanan statik bir Instance
    public GameObject readyPanel;
    public GameObject playPanel;
    public GameObject finishedPanel;
    public TMP_Text roundText;
    public TMP_Text coinsText;
    public TMP_Text finalText;
    public int rounds = 3;
    public float roundTime = 4f;
    private RoundState state;
    private int round = 1;
    private int coins;
    private float timeLeft;

    void Start()
    {
        SetState(RoundState.Ready);
    }

    void Update()
    {
        // state değerine göre dallan: Ready, Space tuşunu bekler; Playing, kalan süreyi geri sayar
    }

    void SetState(RoundState next)
    {
        state = next;
        readyPanel.SetActive(next == RoundState.Ready);
        playPanel.SetActive(next == RoundState.Playing);
        finishedPanel.SetActive(next == RoundState.Finished);
        if (next == RoundState.Ready) roundText.text = "Round " + round;
        if (next == RoundState.Playing) timeLeft = roundTime;
        if (next == RoundState.Finished) finalText.text = "Coins: " + coins;
    }

    // TakeCoin(): bir coin yalnızca Playing sırasında sayılır
}
quiz iconKendini test et

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

Kendi başına pratik yap: Unity playground