Menu
CoddyTech

المال

الدرس 12 من 25 في دورة لعبة Unity: الدفاع عن الأبراج على Coddy.

تكلّف الأبراج أموالًا. الأموال لدى GameManager، ويطلب BuildManager منه الدفع. الطلب والدفع خطوة واحدة: دالة تتحقق من المال، وتأخذه إذا كان المبلغ كافيًا، وتُخبرك باستخدام bool بما إذا كانت قد فعلت ذلك، على غرار إجابة Dictionary.TryGetValue. محفظة آلة البيع:

public bool TryPay(int price)
{
    if (price > coins)
    {
        return false;
    }

    coins -= price;
    coinText.text = coins + " coins";
    return true;
}

لا يستطيع أي مستدعٍ الدفع دون إجراء التحقق، ولا ينخفض عدد العملات أبدًا عن الصفر، إذ لا شيء آخر يغيّره. يوجد السعر في الـprefab: حقل في السكربت الخاص به، يُضبط في Inspector الخاص بالـprefab. الـprefab كائن مُحمَّل مثل أي كائن آخر، لذا يمكن قراءة snackPrefab.price قبل إنشاء أي نسخة منه، لتحديد ما إذا كان ينبغي إنشاؤها.

challenge icon

التحدي

متوسط

تكلّف الأبراج مالًا: 150 للبدء، و50 لكل سهم.

  1. Tower: أضف public int cost = 50;.
  2. GameManager: أضف [SerializeField] private int startMoney = 150; و[SerializeField] private TMP_Text moneyText; وprivate int money;، لعرضها بالشكل Money: 150.
  3. public bool TrySpend(int amount): أعد false إذا كان amount > money؛ وإلا اخصم المبلغ واعرضه وأعد true.
  4. BuildManager: أضف [SerializeField] private GameManager game;؛ وابنِ فقط إذا تحقق game.TrySpend(towerPrefab.cost)، وإلا سجّل Not enough money.

اضغط «العب» وابنِ الأبراج حتى ينفد المال. ثم اضغط «تحقق».

جرّب بنفسك

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: الدفاع عن الأبراج

تدرّب بنفسك: Playground لـ Unity