أين وكيف تتفادى استخدام العقد لكل شيء في جودو
العقد سهلة الإنشاء، ولكن لديها محدودياتها، فيمكن أن يحتوي المشروع عشرات آلاف العقد العاملة، ولكن كلما زاد تعقيدها كلما زاد الضغط على أداء المشروع.
توفر جودو كائنات أخف لإنشاء واجهات برمجة تطبيقات التي تستخدم العقد، أبقي ذلك في عين الاعتبار كخيار عند تصميم كيفية بناء خاصيات مشروعك.
الكائن Object
أبسط كائن خفيف يجب أن يستخدم الكائن الأصلي إدارة الذاكرة اليدوي، ومع ذلك ليس من الصعب إنشاء هيكلية بيانات خاصة حتى هيكلية العقد، وهي أخف من صنف العقدة Node
.
- مثال: لاحظ عقدة الشجرة
Tree
، تدعم مستوى عالي من التعديل لجدول المحتوى مع عدد عشوائي من الصفوف والأعمدة. البيانات المستخدمة لإنشاء التصوير هي حقيقةً كائناتTreeItem
. - ميزات: تبسيط واجهات برمجة التطبيقات إلى كائنات ذات نطاق أصغر تساعد في تحسين الوصول ووقت التكرار. بدلًا من العمل مع مكتبة العقدة كاملة، يمكن اختصار مجموعة الكائنات يستطيع منها إنشاء وإدارة العقد الفرعية المناسبة.
ملاحظة: يجب الانتباه عند التعامل معهم، إذ يمكن تخزين الكائن في متغير ولكن هذه المراجع يمكن أن تصبح غير صالحة بدون سابق إنذار. مثلًا إذا قرر من أنشئ الكائن حذفه، هذا سيعطي حالة خطأ إذا قرر أحدهم الوصول إليه لاحقًا.
الكائن RefCounted
أعقد قليلًا من الكائن Object
. تتبع المراجع references لنفسها وتحذف الذاكرة فقط عندما لا يبقى أي مرجع لنفسه. إن هذه مفيدة في معظم الحالات عندما نحتاج لبيانات في صنف مخصص.
- مثال: لاحظ كائن
FileAccess
إنه يعمل مثل كائنObject
عادي عدا أنه ليس هناك حاجة لحذفه - ميزات: نفس ميزات الكائن
Object
المورد Resource
وهو معقد أكثر من الكائن RefCounted
لديه الخاصية الداخلية لسلسلة serialize/ إزالة سلسلة deserialize (مثل حفظ وتحميل) خصائص الكائن الخاص بهم من/إلى ملفات جودو المصدرية.
- مثال: البرامج النصية، PackedScene (من أجل ملفات المشهد) والأنواع الأخرى مثل كل صنف
AudioEffects
. يمكن حفظ وتحميل كل هذه، أي هي تُشتق من الموردResource
. - الميزات: تحدثنا عن ميزات الموارد
Resource
وعن طرق تخزين البيانات التقليدية، ولكن في سياق استخدام المواردResource
بدلًا من العقدNode
، هذه تتميز بتوافق مع الفاحص Inspector. وهي بنفس خفة الكائناتObejct
وRefCounted
يمكنها أيضًا إظهار وتصدير الخاصيات في الفاحص. هذا يسمح لهم لشغل دور مثل العقد الفرعية عن استعمالية الواجهة، ولكن أيضًا تحسن الأداء إذا كان الهدف أن يكون هناك أكبر عدد ممكن من المواردResource
/العقدNode
في المشهد.