Menu
CoddyTech

الوصول إلى القاعدة

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

وصل عدو عند آخر نقطة مسار إلى القاعدة: يختفي، وتخسر القاعدة أرواحًا. الأرواح تابعة إلى GameManager. قريبًا، ستُنشأ الأعداء من قوالب جاهزة، ولا يمكن للقالب الجاهز أن يشير إلى GameManager في المشهد، لذلك يرسل العدو تقريرًا باستخدام حدث ثابت. ينتمي هذا الحدث إلى الصنف Enemy، لذا يشترك GameManager فيه مرة واحدة، ويتلقى إشعارات من كل عدو، بما في ذلك الأعداء الذين يُنشؤون لاحقًا. يطلقه العدو باستخدام ReachedBase?.Invoke(this);: تتخطى ? إطلاقه عندما لا يستمع إليه أحد، وتُخبر this المستمعَ بنوع العدو الذي وصل.

void OnEnable()
{
    Enemy.ReachedBase += OnReachedBase;
}

void OnDisable()
{
    Enemy.ReachedBase -= OnReachedBase;
}

يظل الحدث الثابت موجودًا طوال مدة اللعبة، لذا يجب أن يقابل كل += عاملُ -= الخاص به: إذ سيظل استدعاء GameManager المُدمَّر قائمًا إن لم يُلغِ اشتراكه.

challenge icon

التحدي

سهل

الأعداء الذين يصلون إلى القاعدة يخصمون أرواحًا.

  1. في EnemyData، أضف public int damage;.
  2. في Enemy، أضف public static event Action<Enemy> ReachedBase; (using System;). عند نقطة المسار الأخيرة، أطلق الحدث ودمّر العدو.
  3. في GameManager، أضف [SerializeField] private int startLives = 20; وprivate int lives;، ثم عيّن قيمة lives في Start. اشترك كما سبق؛ إذ تخصم OnReachedBase قيمة enemy.data.damage من الأرواح.

اضغط «العب»: سيختفي كلا العدوين عند القاعدة. ثم اضغط «تحقق».

جرّب بنفسك

using UnityEngine;

// يأتي لاحقًا: الأرواح، المال، واجهة عرض المعلومات (HUD)، الفوز والخسارة.
public class GameManager : MonoBehaviour
{
}

جميع دروس لعبة Unity: الدفاع عن الأبراج

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