نظام ترقية القاعدة في Unity
في العديد من الألعاب، يتمكن اللاعبون من ترقية قاعدة أو مبنى لفتح ميزات إضافية أو تحسين الدفاع أو زيادة معدلات الإنتاج. سيرشدك هذا البرنامج التعليمي خلال إعداد نظام ترقية القاعدة في Unity، مما يسمح بترقية المبنى إلى مستويات متعددة مع تغييرات بصرية ووظيفية في كل مستوى.
1. إعداد البنية الأساسية
أولاً، قم بإنشاء نص برمجي Base
يحدد خصائص القاعدة الخاصة بك، مثل مستواها وصحتها ومعدل إنتاجها. سيؤدي كل ترقية للمستوى إلى تعديل هذه السمات.
using UnityEngine;
public class Base : MonoBehaviour
{
public int level = 1;
public int health = 100;
public int productionRate = 10;
public void UpgradeBase()
{
level++;
health += 50; // Increase health by 50 with each level
productionRate += 5; // Increase production rate by 5 with each level
Debug.Log("Base upgraded to level " + level);
}
}
يتضمن هذا البرنامج النصي Base
طريقة UpgradeBase()
بسيطة تعمل على زيادة المستوى وترقية سمات القاعدة. قم بإرفاق هذا البرنامج النصي بـ GameObject الأساسي في المشهد.
2. إنشاء مدير الترقية
بعد ذلك، قم بإنشاء البرنامج النصي UpgradeManager
الذي يدير الترقيات الأساسية، بما في ذلك التحقق مما إذا كان لدى اللاعب ما يكفي من العملة للترقية.
using UnityEngine;
public class UpgradeManager : MonoBehaviour
{
public Base playerBase;
public int upgradeCost = 100;
public void AttemptUpgrade()
{
if (CurrencySystem.Instance.SpendCurrency(upgradeCost))
{
playerBase.UpgradeBase();
upgradeCost += 50; // Increase the cost for each upgrade
}
else
{
Debug.Log("Not enough currency to upgrade.");
}
}
}
قم بإرفاق هذا البرنامج النصي UpgradeManager
بكائن لعبة، وقم بتعيين كائن اللعبة الأساسي إلى حقل playerBase
الخاص به، وقم بتعيين تكلفة الترقية الأولية upgradeCost
. كل ترقية تزيد التكلفة، مما يجعل الترقيات المستقبلية أكثر تحديًا.
3. إنشاء نظام العملة
لإدارة تكاليف الترقية، أضف CurrencySystem
كطريقة بسيطة لتتبع عملة اللاعب وإنفاقها. إليك مثال:
using UnityEngine;
public class CurrencySystem : MonoBehaviour
{
public static CurrencySystem Instance;
public int currency = 500;
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
هذا بكائن لعبة في المشهد. يسمح نمط singleton بالوصول بسهولة من البرامج النصية الأخرى، مثل UpgradeManager
.
4. تحديث العناصر المرئية والتأثيرات لكل مستوى
لجعل كل ترقية أساسية مميزة بصريًا، أضف اختلافات لكل مستوى، مثل نماذج أو أنسجة مختلفة. على سبيل المثال:
- إنشاء نماذج ثلاثية الأبعاد متعددة لكل مستوى أساسي، أو إعداد مواد/نسيج مختلفة.
- أضف الكود في فئة
Base
لتبديل النماذج أو المواد في كل مرة يتم فيها زيادة المستوى.
فيما يلي مقتطف من التعليمات البرمجية لتحديث العناصر المرئية في البرنامج النصي Base
:
public GameObject[] levelModels; // Assign each level's model in Inspector
public void UpgradeBase()
{
level++;
health += 50;
productionRate += 5;
UpdateBaseModel();
}
void UpdateBaseModel()
{
for (int i = 0; i < levelModels.Length; i++)
{
levelModels[i].SetActive(i == level - 1);
}
}
سيقوم هذا الكود بتفعيل النموذج الذي يتطابق مع المستوى الحالي للقاعدة وإلغاء تفعيل النماذج الأخرى.
5. إنشاء واجهة مستخدم للترقيات
بعد ذلك، قم بإنشاء عناصر واجهة المستخدم للسماح للاعب ببدء الترقيات وتتبع المستوى الحالي للقاعدة. للقيام بذلك:
- قم بإنشاء لوحة قماشية باستخدام زر يحمل اسم "Upgrade Base".
- قم بإرفاق حدث
OnClick
بهذا الزر، وربطه بطريقةAttemptUpgrade
الخاصة بـUpgradeManager
. - اعرض مستوى القاعدة والصحة ومعدل الإنتاج على واجهة المستخدم لتقديم تعليقات للاعبين حول تقدم الترقية.
6. اختبار نظام الترقية
قم بتشغيل اللعبة وانقر على زر "Upgrade Base". مع كل ترقية، يجب أن تزداد سمات القاعدة، ويجب أن تتغير المرئيات وفقًا لذلك. استخدم سجل التصحيح للتحقق من تغييرات العملة وتعديلات المستوى.
توسيع النظام
يمكن توسيع نظام الترقية الأساسي هذا عن طريق إضافة:
- مستويات جديدة مع سمات مميزة وتحسينات بصرية.
- متطلبات الموارد التي تتجاوز العملة، مثل المواد أو الوقت.
- تأثيرات خاصة للترقيات، مثل تأثيرات الجسيمات أو ردود الفعل الصوتية.
خاتمة
لقد أنشأنا نظام ترقية أساسي في Unity، يتميز بزيادات ديناميكية في السمات، وفحص عملة بسيط، وواجهة مستخدم للترقيات. يوفر هذا النظام الأساس لإضافة آليات أكثر تعقيدًا في لعبتك، مثل الترقيات متعددة المراحل والمرئيات المميزة لكل مستوى.