نظام ترقية اللاعب في Unity

سيرشدك هذا البرنامج التعليمي خلال إنشاء نظام ترقية أساسي في Unity. أنظمة الترقية شائعة في الألعاب، مما يسمح للاعبين بتحسين شخصياتهم أو معداتهم أو قدراتهم بمرور الوقت. سننشئ نظام ترقية نموذجيًا يسمح للاعب بزيادة السمات مثل الصحة والسرعة وقوة الهجوم.

المتطلبات الأساسية

  • Unity تم تثبيت المحرر.
  • فهم أساسي لنظام واجهة المستخدم الخاص بـ C# وUnity.
  • تم إنشاء مشروع باستخدام GameObject لاعب أساسي وUI Canvas لعرض خيارات الترقية.

الخطوة 1: إعداد سمات اللاعب

أولاً، قم بإنشاء نص برمجي بلغة C# لتحديد سمات اللاعب التي يمكن ترقيتها. سيحتوي هذا النص البرمجي على خصائص مثل الصحة والسرعة وقوة الهجوم.

using UnityEngine;

public class PlayerAttributes : MonoBehaviour
{
    public int health = 100;
    public float speed = 5f;
    public int attackPower = 10;

    public void IncreaseHealth(int amount)
    {
        health += amount;
        Debug.Log("Health increased to " + health);
    }

    public void IncreaseSpeed(float amount)
    {
        speed += amount;
        Debug.Log("Speed increased to " + speed);
    }

    public void IncreaseAttackPower(int amount)
    {
        attackPower += amount;
        Debug.Log("Attack Power increased to " + attackPower);
    }
}

قم بإرفاق هذا البرنامج النصي PlayerAttributes إلى GameObject الخاص بالمشغل لإدارة سماته.

الخطوة 2: إنشاء مدير الترقية

بعد ذلك، قم بإنشاء نص برمجي UpgradeManager لإدارة خيارات الترقية وتطبيقها على سمات اللاعب. سيسمح لك هذا النص بالتحكم في تكلفة كل ترقية ومدى زيادة سمات اللاعب.

using UnityEngine;

public class UpgradeManager : MonoBehaviour
{
    public PlayerAttributes player;
    public int healthUpgradeCost = 50;
    public int speedUpgradeCost = 30;
    public int attackUpgradeCost = 40;

    public void UpgradeHealth()
    {
        if (CurrencySystem.Instance.SpendCurrency(healthUpgradeCost))
        {
            player.IncreaseHealth(10); // Increase health by 10
        }
    }

    public void UpgradeSpeed()
    {
        if (CurrencySystem.Instance.SpendCurrency(speedUpgradeCost))
        {
            player.IncreaseSpeed(0.5f); // Increase speed by 0.5
        }
    }

    public void UpgradeAttackPower()
    {
        if (CurrencySystem.Instance.SpendCurrency(attackUpgradeCost))
        {
            player.IncreaseAttackPower(5); // Increase attack power by 5
        }
    }
}

يتحقق هذا البرنامج النصي UpgradeManager مما إذا كان لدى اللاعب ما يكفي من العملة لكل ترقية، ثم يطبق الترقية إذا كانت في المتناول. بعد ذلك، سنضيف نظام عملة بسيطًا لإدارة تكاليف الترقية.

الخطوة 3: إنشاء نظام عملة بسيط

سننشئ نظامًا أساسيًا للعملات يتتبع عملة اللاعب ويسمح له بإنفاقها على الترقيات. ويمكن تمديد هذا النظام ليشمل أي اقتصاد داخل اللعبة.

using UnityEngine;

public class CurrencySystem : MonoBehaviour
{
    public static CurrencySystem Instance;
    public int currency = 100;

    private void Awake()
    {
        if (Instance == null)
            Instance = this;
        else
            Destroy(gameObject);
    }

    public bool SpendCurrency(int amount)
    {
        if (currency >= amount)
        {
            currency -= amount;
            Debug.Log("Currency spent: " + amount + ". Remaining: " + currency);
            return true;
        }
        else
        {
            Debug.Log("Not enough currency.");
            return false;
        }
    }

    public void AddCurrency(int amount)
    {
        currency += amount;
        Debug.Log("Currency added: " + amount + ". Total: " + currency);
    }
}

يمكن لهذا البرنامج النصي CurrencySystem إضافة العملات وإنفاقها، وقد تم تنفيذه كبرنامج نصي منفرد حتى تتمكن من الوصول إليه بسهولة من البرامج النصية الأخرى. قم بإرفاقه بكائن لعبة في المشهد.

الخطوة 4: إعداد واجهة المستخدم للترقيات

للسماح للاعبين بالتفاعل مع نظام الترقية، قم بإنشاء واجهة مستخدم في Unity تحتوي على أزرار لكل خيار ترقية. وإليك الطريقة:

  1. قم بإنشاء Canvas في المشهد الخاص بك (GameObject > UI > Canvas).
  2. أضف الأزرار إلى اللوحة، وقم بتسميتها بـ "Upgrade Health," "Upgrade Speed," و "Upgrade Attack".
  3. قم بإرفاق البرنامج النصي UpgradeManager إلى GameObject في المشهد، وقم بتعيين GameObject الخاص باللاعب إلى حقل player الخاص به في Inspector.
  4. قم بربط حدث عند النقر لكل زر لاستدعاء وظيفة الترقية المناسبة (على سبيل المثال، UpgradeManager.UpgradeHealth()).

الخطوة 5: اختبار نظام الترقية

قم بتشغيل اللعبة وحاول الضغط على أزرار الترقية. يجب أن تنطبق كل ترقية على سمات اللاعب، ويجب أن يقوم CurrencySystem بخفض قيمة العملة وفقًا لذلك. استخدم سجل التصحيح للتأكد من تحديث السمات والعملة كما هو متوقع.

خاتمة

لقد أنشأنا نظام ترقية أساسي في Unity، بما في ذلك سمات اللاعب ونظام العملة ومدير الترقية. يمكنك تخصيص هذا النظام لإضافة المزيد من الترقيات، أو زيادة تكاليف الترقية بشكل ديناميكي، أو حتى إضافة أنواع جديدة من الترقيات بناءً على متطلبات لعبتك. يمكن توسيع هذا الأساس لإنشاء آليات ترقية أكثر تعقيدًا وجاذبية في ألعابك.