Para
Coddy'nin Unity Oyunu: Kule Savunması kursunda ders 12 / 25.
Kuleler paraya mal olur. Para GameManager'a aittir ve BuildManager ondan ödeme yapmasını ister. İstemek ve ödemek tek bir adımdır: parayı kontrol eden, yeterli olduğunda parayı alan ve bunu yapıp yapmadığını Dictionary.TryGetValue yanıtlarındaki gibi bir bool ile belirten bir yöntem. Bir otomatın cüzdanı:
public bool TryPay(int price)
{
if (price > coins)
{
return false;
}
coins -= price;
coinText.text = coins + " coins";
return true;
}Kontrol yapılmadan hiçbir çağıran ödeme yapamaz ve başka hiçbir şey paraları değiştirmediği için para miktarı asla sıfırın altına düşmez. price, prefab üzerinde bulunur: kendi betiğinin bir alanıdır ve prefab'ın Inspector'ında ayarlanır. Prefab, diğer nesneler gibi yüklenmiş bir nesnedir; bu nedenle snackPrefab.price, herhangi bir şey oluşturulmadan önce okunarak oluşturulup oluşturulmaması gerektiğine karar verilebilir.
Görev
OrtaKuleler para harcar: başlangıçta 150, her Ok için 50.
Tower:public int cost = 50;ekle.GameManager:[SerializeField] private int startMoney = 150;,[SerializeField] private TMP_Text moneyText;veprivate int money;ekle;Money: 150olarak gösterilir.public bool TrySpend(int amount):amount > moneyise false döndür; değilse miktarı düş, göster ve true döndür.BuildManager:[SerializeField] private GameManager game;ekle; yalnızcagame.TrySpend(towerPrefab.cost)başarılı olursa inşa et, aksi hâldeNot enough moneymesajını günlüğe yaz.
“Oyna” düğmesine bas ve paran bitene kadar inşa et. Ardından “Kontrol et” düğmesine bas.
Kendin dene
using UnityEngine;
using TMPro;
public class GameManager : MonoBehaviour
{
[SerializeField] private int startLives = 20;
[SerializeField] private TMP_Text livesText;
private int lives;
void OnEnable()
{
Enemy.ReachedBase += OnReachedBase;
}
void OnDisable()
{
Enemy.ReachedBase -= OnReachedBase;
}
void Start()
{
lives = startLives;
ShowLives();
}
void OnReachedBase(Enemy enemy)
{
lives -= enemy.data.damage;
ShowLives();
}
void ShowLives()
{
livesText.text = "Lives: " + lives;
}
}
Unity Oyunu: Kule Savunması bölümündeki tüm dersler
Kendi başına pratik yap: Unity playground