يوم جيد!أود اليوم أن أتحدث بإيجاز عن استخدام الأحداث للتخلص من القمامة وتوفير وظائف معقدة وديناميكية للكود. تجدر الإشارة إلى أن هذه المقالة تركز بشكل أكبر على المبتدئين الذين يرغبون في معرفة المزيد عن أنظمة الأحداث.
سنحلل هذه المسألة برمتها باستخدام مثال نظام التحكم في الصوت. سيسمح لنا هذا النظام بتمكين / تعطيل الموسيقى والأصوات في إعدادات اللعبة.
قبل أن ننشئ فئة مدير ستدير إعدادات الصوت والموسيقى ، سننشئ فئة بسيطة قابلة للتسلسل. سيتم استخدامه كنموذج بيانات للحفظ في JSON.
using System.Collections; using System.Collections.Generic; using UnityEngine;
الآن يمكنك البدء في كتابة فصل المدير. سنقوم بتثبيته على المشهد الأول. سيكون هذا المدير كائنًا عامًا ولن يتم حذفه عند الانتقال من مشهد إلى آخر.
using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO;
الآن بعد أن أصبح المدير جاهزًا ، يمكنك إنشاء كائن فارغ في المشهد الأولي
وتسميته ، على سبيل المثال ،
"_AUDIO_MANAGER" ، ثم إضافة فئة المدير الخاصة بنا إليه. يمكنك القيام بذلك ببساطة عن طريق استدعاء قائمة إضافة مكون على الكائن وتحديد
"مدراء اللعبة" => "مدير الصوت" .
بعد ذلك ، نحتاج إلى كتابة مكون سنرسله إلى كل كائن باستخدام AudioSource.
using System.Collections; using System.Collections.Generic; using UnityEngine;
بهذه الطريقة يمكننا التحكم في الأصوات / الموسيقى في اللعبة. لا يوضح هذا المثال بأي حال كيفية القيام بذلك بشكل صحيح ، ولكنه يوضح فقط تشغيل نظام الأحداث والمستمعين في Unity3D.
وأخيرًا ، أريد أن أتحدث عما استخدمناه للتو. في المثال أدناه ، تم التصريح عن المفوض الذي تم إنشاء المستمع منه:
public delegate void AudioSettingsChanged(); public event AudioSettingsChanged OnAudioSettingsChanged;
يمكنك ضبط أداء المستمع تحت ظروف معينة والتمسك بها بأساليب معينة سيتم تنفيذها عند تحقيق هذه الشروط.
وبمساعدة المندوبين ، على أساس أننا أنشأنا مستمعًا ، يمكنك إنشاء وظائف رد الاتصال. يمكن أن يكون هذا مفيدًا بشكل خاص للطرق غير المتزامنة (على سبيل المثال ، عند إرسال طلبات POST غير المتزامنة).
آمل أن تجد تجربتي الصغيرة مفيدة في هذا الأمر ويمكنك تطبيق هذا المثال على مشاريعك. سأكون سعيدًا أيضًا للإجابة على أسئلتك (إذا كان شخص ما لا يفهم شيئًا).