الـ Namespace في اليونتي هو عبارة عن نطاق اسم تحددة لهذا الملف البرمجي, مثلاً معنا ملف برمجي بأسم ClassOne و آخر بأسم ClassTwo هنا في حالة اردت استدعاء او التعامل مع متغيرات الملف ClassOne في الملف ClassTwo ستضطر لادخال او استيراد نطاق الاسم, عند انشاء اي ملف برمجي تلاحظ في الاعلى وجود نطاق الاسم (Collections) و هذا الانطاق يمتد من نطاق رئيسي (System), لاحظ ان النطاق الرئيسي يتفرع منة عدة نطاقات اي انة عبارة عن ملف برمجي و هناك العديد من الملفات يمتدوا منة, حسناً جرب حذف النطاق UnityEngine و قم بكتابة اي متغير وليكن Transform ستلاحظ ان الفئة تظهر خطأ او بالاصح هذه الفئة غير موجودة و السبب انك قمت بحذف نطاق الاسم لهذه الفئة, اذن نطاق الاسم هنا مهم جداً و فائدتة الاهم هي التفريق بين الملفات او بالاصح حجز نطاق لكل ملف و هذا الشيء مفيد جداً و اشدد على استخدامة في حالة عملت مع فريق لكي لا تتشعب الملفات مع بعضها.
حسنا الى هنا عرفنا فائدة الـ Namespace, اذن سنقوم بأنشاء واحد لكي نفهم اكثر, في البداية قم بأنشاء ملفين برمجيين الاول بأسم ClassOne و الثاني ClassTwo, حسناً سنضع نطاق اسم للملف ClassOne, كيف نعمل هذا؟ تأمل الصورة التالية:
using UnityEngine;
using System.Collections;
namespace NameClass{
public class ClassTwo {
public int c;
public void GetValuse(int a, int b)
{
c = a + b;
}
public static int RandomValuse(int min,int max)
{
System.Random random = new System.Random();
return random.Next (min, max);
}
}
}
اذن لاحظ في بداية هذا الكود اننا عرفت نطاق اسم لهذا الكلاس بأسم NameClass, اي في حالة اردنا الوصول الى اكواد هذا الملف علينا ادخال نطاق الاسم, بالنسبة للدوال تلاحظ انة لذي دالة public void و اخرى public static int , الدالة الاولى ستطلب Constructor باسم معين لاستدعائها, اما بالنسبة للدالة الثانية فستستطيع استدعائها دون الحاجة الى Constructor, و ايضاً نفس الشىء على المتغيرات في حالة كانت Static او لم تكن, حسناً بالنسبة للملف ClassOne سنجعلها ملف يقوم بطباعة الارقام اعتماداً على الدوال في الملف الآخر, لاحظ هذا الكود:
using UnityEngine;
using System.Collections;
using NameClass;
public class ClassOne : MonoBehaviour {
void Start()
{
ClassTwo classTwo = new ClassTwo();
classTwo.GetValuse(10,20);
print ("namber" + classTwo.c);
print ("Random" + ClassTwo.RandomValuse(0,100));
}
}
حسناً دعنا نناقش هذا الكود, لاحظ في البداية اننا استدعينا نطاق الاسم (Name Class) للملف ClassTwo و بهذا الشكل يمكننا الوصول الى الى دوال و متغيرات هذا الملف.
في Start لاحظ اننا في البداية عرفنا اسم جديد للملف ClassTwo و بما ان لذينا دالة تتطلب Constructor لاستدعائها و اخرى تستدعى بشكل مباشر, اذن لاحظ في السطر الاول اننا قمنا بأستدعاء الدالة GetValuse و هي تطلب بارامترين من نوع int و منهم تقوم بحساب قيمتهم معاً في المتغير c و هذا ما عملناة بالضبط, بالنسبة للدالة الثانية لاحظ انني قمت بأستدعائها من الكلاس بشكل مباشر و هي تعطينا قيمة عشوائية بين الرقم 0 و 100. بالنسبة لاستدعاء احد الملفات كل ما عليك فعلة هو وضع الملف ClassOne في اي كائن و هو سيقوم بعملة تلقائياً, اتمنى ان يكون هذا الدرس قد افادكم و شكراً على المتابعة :).