Tiền
Bài học 12 trên 25 trong khóa học Game Unity: thủ thành của Coddy.
Tháp tiêu tốn tiền. GameManager giữ tiền, còn BuildManager yêu cầu GameManager thanh toán. Yêu cầu và thanh toán gộp trong một bước: một phương thức kiểm tra số tiền, trừ tiền nếu đủ và cho biết bằng kiểu bool việc đó có thành công hay không, giống cách Dictionary.TryGetValue trả lời. Ví tiền của máy bán hàng tự động:
public bool TryPay(int price)
{
if (price > coins)
{
return false;
}
coins -= price;
coinText.text = coins + " coins";
return true;
}Mọi nơi gọi phương thức đều phải kiểm tra trước khi thanh toán, và số xu không bao giờ xuống dưới 0 vì không có gì khác thay đổi số xu. Giá nằm trên prefab: một trường trong script riêng của prefab, được thiết lập trong cửa sổ Inspector của prefab. Prefab là một đối tượng đã tải như mọi đối tượng khác, nên bạn có thể đọc snackPrefab.price trước khi tạo đối tượng, để quyết định có nên tạo hay không.
Thử thách
Trung bìnhTháp tốn tiền: bắt đầu với 150, mỗi tháp Arrow tốn 50.
Tower: thêmpublic int cost = 50;.GameManager: thêm[SerializeField] private int startMoney = 150;,[SerializeField] private TMP_Text moneyText;vàprivate int money;, hiển thị dưới dạngMoney: 150.public bool TrySpend(int amount): trả về false nếuamount > money; nếu không, trừ khoản tiền đó, hiển thị số tiền còn lại rồi trả về true.BuildManager: thêm[SerializeField] private GameManager game;; chỉ xây tháp nếugame.TrySpend(towerPrefab.cost)trả về true, nếu không thì ghi nhật kýNot enough money.
Nhấn Chơi rồi xây tháp cho đến khi hết tiền. Sau đó nhấn Kiểm tra.
Tự làm thử
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;
}
}
Tất cả bài học trong Game Unity: thủ thành
Tự luyện tập: Playground Unity