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;
    }
}