شرح المتغاييرات والدوال وطريقة التعامل معها variables
المتغاييرات هي طريقة عمل يستخذمها البرنماج للتعامل مع البيانات وترتيبها
variable متغايير بمعنى قابل للتغيير لبد ان تحفظها جيدا لانها مهمة جدا
سنشرح بكل بساطة تخيل انك كنت تسكن في بيت صغير ثم حاليا تريد الانتقال الى منزل اخر كبير
وهذا طبعا يعني انك تريد نقل الاثاث والكتب والصور وملابسك وغيرها من انواع مختلفة
اذا ما هو الافضل بالنسبة لك هل صندوق واحد تجمع فيه كل شيء او تقسمهم الى صناديق متعددة وكل صندوق فيه شئ معين مثلا صندوق خاص بالملابس وصندوق خاص بالكتب واخر خاص بالصور وغيرها
اذا ترتيب الاشياء في صناديق متعددة وكل صندوق خاص بشء معين يسهل علينا الكثير من العمل والبحث تصبح انت تعرف كل شء بمكانه بالضبط اذا ناخذ كل صندوق نكتب عليه اسم مناسب صندوق ملابس نسميه ملابس وصندوق الصور نسميه الصور وغيرها
اذا اعطينا لكل صندوق اسم مميز كي نستطيع الوصول اليه بسهولة
وكذلك نفس الشء بالنسبة للبرمجة فهذه الصناديق هي التي تمثل المتغاييرات variables
فانت تنشء صناديق تعطيه اسم مثل شريط الصحة في الالعاب فهذا صندوق خاص بشريط الصحة للعبة وسوف يخزن فيه كل البيانات الخاص بهذا الامر كي يستطيع الوصول اليه بسهولة كما فعلنا بالمثال السابق
اذا المتغاييرات عبارة عن مساحات تخزين لها اسم مميز نعطيها اسم الوظيفة التي ستؤديها باللعبة كي يكون كل شيء واضح لك ويكون داخلها بيانات نستدعيها كلما احتجنا اليها داخل الكود او البلوبرينت في انرل انجن
ويكون الفرق بين صناديق العادية وصناديق المتغايير انه في العادية تستطيع وضع اشياء مختلفة بصندوق واحد لكن المتغايير لا يسمح بذلك فكل شء له صندوقه الخاص به فان فعلت ووضعت فيه اشياء اخرى فلن يعمل الكود ويقوم بعمل صندوق المناسب لكل نوع من البيانات وذلك كي يحافظ على ذاكرة الجهاز
والصورة مثال بسيط لفهم ان كل متغايير بمساحته مختلفة عن الاخر
أنواع المتغيرات الشائعة في Blueprint
(أ) عددية (Numeric):
Integer: عدد صحيح (مثل 1، 50، -10).
Float: عدد عشري (مثل 3.14، 0.5).
(ب) منطقية (Boolean):
Boolean: تأخذ قيمة واحدة فقط: True أو False.
تُستخدم لاتخاذ قرارات (مثل: هل اللاعب قفز؟).
(ج) نصوص (String):
String: سلسلة نصوص (مثل: "Hello", "Player1").
Name: نصوص مخصصة لكنها أكثر كفاءة.
(د) بيانات معقدة (Complex):
Vector: موقع ثلاثي الأبعاد (X, Y, Z).
Rotator: الدوران ثلاثي الأبعاد (Yaw, Pitch, Roll).
Transform: مزيج من الموقع، الدوران، والحجم.
(هـ) مرجع كائنات (Object References):
يمكن تخزين مراجع للكائنات مثل الشخصيات أو العناصر.
كيفية إنشاء متغير في Blueprint
افتح Blueprint (مثل Player أو أي Actor).
من اللوحة الجانبية (Details)، انقر على +Variable.
قم بتسمية المتغير واختر نوعه من القائمة المنسدلة.
يمكن تعيين قيمة افتراضية من خلال النقر على المتغير في قائمة الخصائص (Details).
العمليات على المتغيرات
(أ) تعيين قيمة (Set):
تُستخدم لتغيير قيمة المتغير أثناء التشغيل.
مثال: زيادة النقاط عند قتل عدو.
(ب) جلب قيمة (Get):
تُستخدم للوصول إلى قيمة المتغير واستخدامها في العمليات.
مثال: التحقق من صحة اللاعب.
(ج) الجمع بين المتغيرات:
يمكن إجراء عمليات رياضية أو منطقية بين المتغيرات.
مثال: Score = Score + 10.
مجالات المتغيرات (Scope)
محلي (Local): يعمل فقط داخل الوظيفة أو الحدث الحالي.
عالمي (Global): يمكن الوصول إليه من أي جزء في الـ Blueprint.
Instance: مرتبط بالكائن المحدد فقط (مثل متغير صحة لكل عدو بشكل مستقل).
فوائد استخدام المتغيرات
تخزين القيم لاستخدامها لاحقًا.
تسهيل إعادة استخدام القيم والمعلومات.
تحسين قراءة وفهم الكود.
تخصيص سلوك الكائنات والعناصر.
تمارين تطبيقية على المتغيرات
التمرين 1: عداد للنقاط (Score Counter)
قم بإنشاء Blueprint لشخصية اللاعب.
أضف متغيرًا من نوع Integer باسم PlayerScore.
عند جمع عنصر معين (مثل Coin):
استخدم Set PlayerScore لزيادة النقاط بمقدار 10.
اعرض النقاط باستخدام Print String.
التمرين 2: التحكم بالصحة (Health System)
أضف متغيرًا من نوع Float باسم PlayerHealth واجعل القيمة الافتراضية 100.
عند اصطدام اللاعب بجسم مضر (مثل نار):
قلل قيمة الصحة بمقدار 20.
إذا وصلت الصحة إلى 0، قم بإنهاء اللعبة باستخدام Game Over Message.
التمرين 3: فتح باب بشرط
قم بإنشاء متغير Boolean باسم HasKey.
عندما يجمع اللاعب المفتاح:
غير قيمة HasKey إلى True.
عند محاولة فتح الباب:
تحقق من قيمة HasKey.
إذا كانت True، افتح الباب.
التمرين 4: التحرك بسرعة متغيرة
أضف متغيرًا من نوع Float باسم PlayerSpeed، واجعل القيمة الافتراضية 600.
عند ضغط اللاعب على زر السرعة (Shift):
زد قيمة PlayerSpeed إلى 1200.
عند رفع الزر، أعدها إلى 600.
استخدم هذه القيمة لتغيير سرعة الحركة باستخدام Character Movement Component.
التمرين 5: عداد زمني (Timer)
أضف متغيرًا من نوع Float باسم GameTime.
استخدم حدث Tick لتحديث القيمة بمقدار Delta Time.
اعرض الوقت على الشاشة باستخدام Print String.
المتغيرات أداة أساسية للتحكم في البيانات داخل الألعاب.
تعمل على تخزين القيم، تحديثها، واستخدامها لتخصيص سلوك اللعبة.
التمارين العملية تساعد في فهم كيفية إنشاء المتغيرات واستخدامها بفعالية في بناء الألعاب باستخدام Blueprint.
العمليات الحسابية في Unreal Engine Blueprint
في Unreal Engine Blueprint، العمليات الحسابية تُستخدم بشكل واسع للتحكم في سلوك اللعبة، اتخاذ القرارات، وضبط القيم. يمكن أن تكون العمليات رياضية أو منطقية أو مقارنة.
1. الأنواع الأساسية للعمليات الحسابية
(أ) العمليات الرياضية:
جمع (+): إضافة قيمة إلى متغير.
طرح (-): تقليل قيمة من متغير.
ضرب (*): ضرب القيم معًا.
قسمة (/): قسمة قيمة على أخرى.
باقي القسمة (Modulo %): إيجاد الباقي عند قسمة عدد على آخر.
(ب) العمليات المنطقية:
AND: يتحقق من أن جميع الشروط صحيحة.
OR: يتحقق إذا كان أي شرط صحيح.
NOT: عكس الحالة (True → False أو False → True).
(ج) عمليات المقارنة:
Equal (==): التحقق إذا كانت القيم متساوية.
Not Equal (!=): التحقق إذا كانت القيم غير متساوية.
Greater Than (>): التحقق إذا كانت القيمة أكبر.
Less Than (<): التحقق إذا كانت القيمة أصغر.
Greater Than or Equal (>=): التحقق إذا كانت القيمة أكبر أو تساوي.
Less Than or Equal (<=): التحقق إذا كانت القيمة أصغر أو تساوي.
2. استخدام العمليات مع أمثلة عملية
مثال 1: التحقق إذا كانت قيمة تساوي صفر
السيناريو: تريد التحقق إذا كانت ذخيرة اللاعب قد انتهت.
أضف متغيرًا من نوع Integer باسم AmmoCount.
استخدم عقدة Branch مع الشرط:
AmmoCount == 0
إذا كانت القيمة تساوي صفر:
قم بعرض رسالة "لا توجد ذخيرة".
امنع اللاعب من إطلاق النار.
مثال 2: تقليل الصحة عند الضرر
السيناريو:
عند اصطدام اللاعب بجسم مضر، يتم تقليل الصحة.
أضف متغيرًا من نوع Float باسم PlayerHealth واجعل قيمته الافتراضية 100.
عند الضرر:
اطرح مقدار الضرر:
PlayerHealth - Damage → Set PlayerHealth
استخدم عقدة Branch للتحقق إذا وصلت الصحة إلى صفر:
PlayerHealth <= 0
إذا كانت True:
قم بإنهاء اللعبة.
مثال 3: عدّاد العناصر المجمعة
السيناريو:
اللاعب يجمع عناصر، وعند جمع 10 عناصر يتم فتح الباب.
أضف متغيرًا من نوع Integer باسم CollectedItems.
عند جمع عنصر:
زد العداد بمقدار 1:
CollectedItems + 1 → Set CollectedItems
تحقق إذا كانت القيمة تساوي 10:
CollectedItems == 10
إذا كانت True:
افتح الباب.
مثال 4: التبديل بين حالتين باستخدام "NOT"
السيناريو:
عند الضغط على زر معين، قم بتبديل حالة مصباح بين التشغيل والإيقاف.
أضف متغيرًا من نوع Boolean باسم IsLightOn.
عند الضغط على الزر:
عكس الحالة باستخدام NOT:
NOT IsLightOn → Set IsLightOn
استخدم قيمة IsLightOn لتشغيل أو إطفاء المصباح.
مثال 5: حركة دورية باستخدام "Modulo"
السيناريو:
تشغيل حركة دورية لمروحة.
أضف متغيرًا من نوع Integer باسم RotationStep.
استخدم الحدث Tick:
زد قيمة RotationStep:
RotationStep + 1 → Set RotationStep
استخدم Modulo لضبط القيم بين 0 و359:
RotationStep % 360 → Set RotationStep
استخدم القيمة لتحديث دوران المروحة.
3. تمارين تطبيقية على العمليات الحسابية
التمرين 1: عداد للذخيرة
أضف متغيرًا AmmoCount واجعل قيمته الافتراضية 10.
عند إطلاق النار:
قلل قيمة AmmoCount بمقدار 1.
إذا كانت القيمة AmmoCount == 0:
عرض رسالة "انتهت الذخيرة".
التمرين 2: عد تنازلي للمؤقت
أضف متغيرًا Timer واجعل قيمته الافتراضية 30.
استخدم حدث Tick لتقليل القيمة:
Timer - DeltaTime → Set Timer
إذا كانت Timer <= 0:
أوقف اللعبة.
التمرين 3: حساب النقاط بناءً على الأداء
أضف متغيرين:
EnemiesDefeated (عدد الأعداء المهزومين).
TotalScore (إجمالي النقاط).
عند هزيمة عدو:
زد EnemiesDefeated بمقدار 1.
احسب النقاط باستخدام ضرب:
EnemiesDefeated * 10 → Set TotalScore
التمرين 4: مقارنة سرعة اللاعب
أضف متغيرًا PlayerSpeed من نوع Float.
إذا كانت السرعة أكبر من 600:
عرض رسالة "اللاعب يركض".
إذا كانت السرعة أقل أو تساوي 600:
عرض رسالة "اللاعب يمشي".
العمليات الحسابية تُستخدم بشكل واسع في الألعاب لتعديل القيم، مقارنة الحالات، واتخاذ القرارات.
المقارنات (مثل == أو <=) تُستخدم للتحقق من الشروط مثل انتهاء الذخيرة أو الصحة.
*العمليات الرياضية (مثل +, -, ) تُستخدم لتحديث القيم مثل النقاط أو عدادات الزمن.
الجمع بين العمليات الحسابية والمنطقية يساعد في تصميم منطق لعب ديناميكي وفعال.
الموضوع قابل للتجديد وطرح افكار جديدة
ابقى على الاطلاع من حين للاخر
من مجهودنا الخاص
اترك لنا دعوة من القلب
تحياتي