حيل برمجة الوحدة

عندما يتعلق الأمر بالبرمجة في Unity، هناك عدد كبير من الكلمات الرئيسية والأوامر المفيدة programming لتحسين سير العمل داخل المحرر وتسريع عملية التطوير.

بعض الكلمات الأساسية مخصصة لتصحيح الأخطاء، بينما تم تصميم البعض الآخر لفصل منطق المحرر عن منطق البرمجة النصية.

1. '[SerializeField]' يصف

افتراضيًا، يخفي Unity المتغيرات الخاصة من المفتش، ولكن بإضافة سمة '[SerializeField]' قبلها، ستصبح قابلة للتكوين في المفتش مع إبقائها غير قابلة للوصول من داخل البرامج النصية الأخرى.

[SerializeField]
private int myPrivateVariable;

2. '[HideInInspector]' و '[System.NonSerialized]' السمات

تتمتع كل من السمتين '[HideInInspector]' و '[System.NonSerialized]' بوظيفة مماثلة، وهي إخفاء المتغيرات العامة عن المفتش، ومع ذلك، فهي تختلف قليلاً من حيث التسلسل.

الفرق بين '[HideInInspector]' و '[System.NonSerialized]' هو أن '[HideInInspector]' سوف يخفي المتغير من المراقب فقط، ومع ذلك، Unity سيستمر في إجراء تسلسل له (بمعنى أن القيمة الافتراضية قد تكون مختلفة عن تلك المتوفرة في الكود)، من ناحية أخرى، لن يقوم '[System.NonSerialized]' بإخفاء المتغير عن المفتش فحسب، بل سيشير أيضًا إلى Unity بعدم إجراء تسلسل له (بمعنى أنه سيتم إعادة تعيين القيمة الافتراضية بين الجلسات إلى القيمة المتوفرة في الكود).

[HideInInspector]
public int myInternalVariable = 0; //Will always be 0 after the first initialization, so if you decide to change the value in the script, it may not always reflect in the Editor. Often used to remove clutter from the inspector.

[System.NonSerialized]
public int myNonSerializedVariable = 1; //The initial value will always be 1, or whatever value is set. Often used to mimic a private variable, while keeping it accessible from within other scripts.

3. '[ExecuteAlways]' يصف

'[ExecuteAlways]' يفرض تنفيذ البرنامج النصي في وضع التحرير ووضع التحرير Prefab، حتى في حالة عدم تشغيل اللعبة. يمكن أن يكون هذا مفيدًا لأغراض الاختبار والتصحيح.

تتم إضافة السمة قبل إعلان الفئة:

[ExecuteAlways]
public class MyScript : MonoBehaviour {
    // ...
}

4. 'Debug.Break()'

'Debug.Break()' يوقف المحرر مؤقتا.

تكون هذه الوظيفة مفيدة عندما تريد التحقق من قيم معينة في المفتش ولا يمكنك إيقافها مؤقتًا يدويًا.

void Update() {
    if (someCondition) {
        Debug.Break();
    }
}

5. '[Range]' يصف

تسمح لك السمة '[Range]' بإنشاء شريط تمرير في المحرر لمتغير عام أو متغير int، والذي يمكن أن يكون مفيدًا لتعديل القيم أثناء التنقل، بطريقة أكثر سهولة في الاستخدام. فقط قم بتوفير القيم الدنيا والقصوى، مثل هذا:

[Range(0f, 1f)]
public float myFloatVariable;

قم بالتعليق أدناه على نصائح وحيل البرمجة المفضلة لديك في Unity.

المقالات المقترحة
قائمة الوحدة للكلمات الرئيسية المفيدة في C#
مقدمة إلى لغة البرمجة النصية Unity C#
فهم البنية القائمة على المكونات في Unity
إنشاء نظام جرد وصياغة العناصر في الوحدة
إنشاء تأثير وقت الرصاصة في الوحدة
إنشاء كائنات تفاعلية في الوحدة
تنفيذ التفاعلات الحركية في الوحدة