دليل المبتدئين لواجهة Unity C#
الواجهة في C# عبارة عن عقد يحدد مجموعة من الأساليب والخصائص والأحداث التي يجب على الفصل تنفيذها. إنه بمثابة مخطط لتنفيذ الوظائف في فئات متعددة. توفر الواجهات طريقة لتحقيق تعدد الأشكال، مما يسمح للفئات المختلفة بمشاركة السلوكيات المشتركة.
Unity واجهة #C
لاستخدام الواجهات في Unity، اتبع الخطوات التالية:
- قم بإنشاء برنامج نصي جديد وقم بتسميته بأي شيء (في حالتي سأسميه InterfaceContainer)
- قم بإزالة كل ما بداخله ثم قم بلصق الكود أدناه:
public interface IEntity
{
void Initialize(); //Function without any arguments
float health { get; set; } //A variable
void ApplyDamage(float points); //Function with one argument
}
تسمى الواجهة IEntity (ملاحظة: الحرف الكبير i في البداية ليس ضروريًا، ولكن من أجل الراحة، قم بتسمية جميع واجهاتك بـ 'I' في ابدأ، وبهذه الطريقة ستعرف متى يستخدم الفصل واجهة).
لاستخدام الواجهة في برنامج نصي C#، اتبع الخطوات التالية:
- قم بإنشاء برنامج نصي جديد وقم بتسميته بأي شيء (في حالتي سأسميه EntityScript)
- أضف اسم الواجهة بعد MonoBehaviour، وهو IEntity في هذه الحالة (مفصولاً بفاصلة)
public class EntityScript : MonoBehaviour, IEntity
ستلاحظ أن البرنامج النصي يعطي خطأً، وذلك بسبب عدم تنفيذ طرق الواجهة. لذلك دعونا ننفذ أساليب IEntity:
using UnityEngine;
public class EntityScript : MonoBehaviour, IEntity
{
public float health { get; set; }
public void Initialize()
{
health = 100;
}
public void ApplyDamage(float points)
{
health -= points;
}
}
يتم الآن تنفيذ أساليب الواجهة.
كيف تعمل الواجهات على تبسيط سير عمل البرمجة؟
الميزة الرئيسية لواجهات C# هي أنه يمكن استخدامها بواسطة عدة classes، لذلك بدلاً من استدعاء GetComponent لكل برنامج نصي، يمكنك الحصول على كافة مراجع البرنامج النصي باستخدام اسم الواجهة.
استخدم واجهات C# عندما تحتاج إلى تنفيذ نفس الأساليب في أكثر من برنامج نصي، أو عندما تحتاج إلى الإشارة إلى فئة غير معروفة في نفس السياق.
تحقق من المثال أدناه:
//Get the script that uses IEntity interface
IEntity interfaceEntity = gameObject.GetComponent<IEntity>();
interfaceEntity.Initialize(); //Initializing the entity
interfaceEntity.ApplyDamage(10); //Applying the damage
interfaceEntity.health += 10; //Healing the entity
يحصل البرنامج النصي أعلاه على مكون بواجهة IEntity، ثم يستدعي أساليبه.
علاوة
يمكن أن تقبل الواجهات أيضًا أنواع البيانات المخصصة، على سبيل المثال:
public interface IHealable<T>
{
void Heal(T type);
}
يتم بعد ذلك توفير نوع البيانات عند تنفيذ الواجهة في فئة ما (يمكن أن يكون نوعًا قياسيًا مثل float أو int، أو نوعًا أكثر تعقيدًا مثل Class أو حتى نوع آخر واجهه المستخدم):
using UnityEngine;
public class EntityScript : MonoBehaviour, IEntity, IHealable<int>
{
public float health { get; set; }
public void Initialize()
{
//health = 100;
Heal(100);
}
public void ApplyDamage(float points)
{
health -= points;
}
public void Heal(int points)
{
health = points;
}
}