الوحدة هي واحدة من أكثر بيئات تطوير الألعاب شيوعا والتي تتيح لك إنشاء ألعاب لمنصات مختلفة مثل أجهزة الكمبيوتر والأجهزة المحمولة ووحدات التحكم. ومع ذلك ، عند العمل مع الوحدة ، يمكن أن تحدث أخطاء حتما ، مما قد يجعل من الصعب تطوير اللعبة واختبارها. أحد هذه الأخطاء هو" لم يتم تعيين مرجع الكائن على مثيل كائن " ، وهو أمر شائع جدا.
يحدث هذا الخطأ عندما يحتوي البرنامج على مرجع لكائن لم تتم تهيئته. بمعنى ، حاول الكائن الوصول إلى بعض الخصائص أو طريقة كائن آخر ، ولكن هذا الكائن غير موجود. يمكن مقارنة هذا الخطأ بمحاولة الوصول إلى مربع فارغ — لن تتمكن من العثور على شيء بداخله أو استخدامه.
قد تكون أسباب هذا الخطأ مختلفة. غالبا ما يحدث بسبب تسلسل غير صحيح للمكالمات أو تبعيات محددة بشكل غير صحيح بين الكائنات. قد يحدث خطأ أيضا إذا تم استخدام المتغيرات العامة بشكل غير صحيح أو إذا تم إجراء محاولة للوصول إلى كائن تم إتلافه بالفعل.
قد يتطلب إصلاح الخطأ "لم يتم تعيين مرجع الكائن على مثيل كائن" في الوحدة بعض الوقت وتحليل التعليمات البرمجية بعناية. ومع ذلك ، بمساعدة بعض الأساليب والأدوات الأساسية ، سيتمكن المطورون من العثور على هذا الخطأ وإصلاحه.
- كيفية إصلاح الخطأ "لم يتم تعيين مرجع الكائن إلى مثيل كائن" في الوحدة
- فهم خطأ الوحدة "لم يتم تعيين مرجع الكائن على مثيل كائن"
- التحقق من وجود مرجع إلى كائن
- استخدام عوامل التشغيل الشرطية لتجنب الخطأ
- فحص الكائنات عند تحميل مستوى
- تعيين القيم الافتراضية للكائنات
- استخدام إخراج التصحيح للعثور على خطأ
- التحقق من التعليمات البرمجية وتصحيح الأخطاء يدويا
- إنشاء حماية ضد الخطأ "لم يتم تعيين مرجع الكائن على مثيل كائن"
- سؤال وجواب
- ماذا يعني الخطأ "لم يتم تعيين مرجع الكائن إلى مثيل كائن" في الوحدة?
- Reference " لم يتم تعيين مرجع الكائن إلى مثيل كائن "unity الوحدة?
- Reference " لم يتم تعيين مرجع الكائن إلى مثيل كائن "unity الوحدة?
Unity "لم يتم تعيين مرجع الكائن إلى مثيل كائن" unity الوحدة
Reference "لم يتم تعيين مرجع الكائن على مثيل كائن" unity ، unity الوحدة. يحدث عند محاولة الوصول إلى كائن لم تتم تهيئته أو غير موجود.
فيما يلي بعض الخطوات التي يمكن أن تساعدك في إصلاح هذا الخطأ:
- تحقق من تهيئة الكائن بشكل صحيح. راجع التعليمات البرمجية بعناية وتأكد من أن الكائن الذي تقوم بالوصول إليه قد تم إنشاؤه أو تعيينه بشكل صحيح. تحقق من المتغيرات وقيمها وترتيب التهيئة.
- تحقق من أمر تنفيذ التعليمات البرمجية. في بعض الحالات ، قد يحدث الخطأ بسبب أمر تنفيذ التعليمات البرمجية غير صحيح. تأكد من تهيئة الكائنات بالترتيب الصحيح وأن جميع الإجراءات الضرورية يتم تنفيذها قبل الوصول إلى الكائن.
- // قم بتنفيذ الإجراءات اللازمة مع الكائن
}
استخدم تصحيح الأخطاء للعثور على المشكلة. إذا لم تساعد الخطوات المذكورة أعلاه ، فاستخدم أدوات تصحيح أخطاء الوحدة للعثور على مكان حدوث الخطأ. استخدم نقاط التوقف أو معلومات تصحيح الإخراج لمعرفة المتغير أو الكائن الذي هو مصدر الخطأ.
باتباع هذه الخطوات واستخدام مبادئ التصحيح الأساسية ، ستتمكن من إصلاح الخطأ "لم يتم تعيين مرجع الكائن على مثيل كائن" ومواصلة تطوير مشروعك في الوحدة.
فهم خطأ الوحدة "لم يتم تعيين مرجع الكائن على مثيل كائن"
عند تطوير الألعاب في الوحدة ، قد تواجه الخطأ"لم يتم تعيين مرجع الكائن إلى مثيل كائن". يحدث هذا الخطأ عند محاولة الوصول إلى كائن لم تتم تهيئته.
لفهم هذا الخطأ بشكل أفضل ، دعنا نلقي نظرة على مثال. لنفترض أن لديك برنامج نصي يحتاج إلى الوصول إلى مكون من كائن آخر:
مثال على الفصل العام: السلوك الأحادي
{
لعبة عامةكائن أخرىكائن;
بداية الفراغ()
{
أوثيروبجيكت.جيتكومبوننت ().دوسوميثينغ();
}
}
في هذا المثال ، لدينا متغير عام آخركائن يتوقع مرجعا لكائن لعبة آخر. في طريقة البداية () ، ونحن نحاول الحصول على مكون سوميكومبوننت من أوثيروبجيكت واستدعاء طريقة دوسوميثينغ ().
ومع ذلك ، إذا لم يقم مفتش الوحدة بتعيين مرجع إلى كائن اللعبة المطلوب ، فسيحدث الخطأ "لم يتم تعيين مرجع الكائن إلى مثيل كائن". وذلك لأن متغير أوثيروبجيكت لا يحتوي على مرجع للكائن ، مما يعني أنه لا يمكننا الوصول إلى مكون سوميكومبوننت.
لإصلاح هذا الخطأ ، تحتاج إلى التأكد من أن متغير أوثيروبجيكت لديه مرجع إلى الكائن المطلوب. للقيام بذلك ، افتح نافذة المفتش ، وابحث عن البرنامج النصي على سبيل المثال واسحب الكائن الذي تريد الارتباط به إلى حقل كائن آخر.
هناك طريقة أخرى لتجنب الخطأ "لم يتم تعيين مرجع الكائن على مثيل كائن" وهي إضافة فحص مرجعي في الكود:
بداية الفراغ()
{
إذا (كائن آخر != لاغية)
{
أوثيروبجيكت.جيتكومبوننت ().دوسوميثينغ();
}
}
وبالتالي ، سيتحقق البرنامج مما إذا كان متغير أوثيروبجيكت يحتوي على مرجع إلى الكائن ، وعندها فقط سيحاول الحصول على مكون سوميكومبوننت.
من المهم الانتباه إلى الخطأ" لم يتم تعيين مرجع الكائن على مثيل كائن " وتعيين المراجع إلى الكائنات بشكل صحيح لتجنب مثل هذا الخطأ في مشروع الوحدة الخاص بك.
التحقق من وجود مرجع إلى كائن
يحدث الخطأ "لم يتم تعيين مرجع الكائن إلى مثيل كائن" في الوحدة عند محاولة الوصول إلى كائن لم تتم تهيئته.
- أو
- تحقق من الرابط إلى
- استخدام
ال ?.
(مشغل الملاحة الآمن) بناء لتجنب الأخطاء عند الوصول إلى خصائص الكائن أو الأساليب.
أمثلة على التحقق من وجود مرجع لكائن:
إذا (ميوبجيكت != لاغية)
{
// الإجراءات في حالة وجود الإشارة إلى الكائن
}
...
إذا (ميوبجيكت?.احصل على المكون ()!= لاغية)
{
// الإجراءات في حالة وجود المكون
}
...
إذا (ميوبجيكت?.ملكيتي != لاغية)
{
// الإجراءات إذا كانت الخاصية موجودة
}
باستخدام هذه الشيكات ، يمكنك تجنب الخطأ" لم يتم تعيين مرجع الكائن إلى مثيل كائن " وضمان سلامة العمل مع الكائنات في الوحدة.
استخدام عوامل التشغيل الشرطية لتجنب الخطأ
يحدث الخطأ" لم يتم تعيين مرجع الكائن على مثيل كائن " في الوحدة عندما نحاول الوصول إلى كائن لم تتم تهيئته (لا يهم). لتجنب مثل هذا الخطأ ، يمكنك استخدام عوامل التشغيل الشرطية.
تتمثل إحدى الطرق في التحقق مما إذا كان المرجع إلى كائن فارغا قبل استخدام هذا الكائن. على سبيل المثال:
إذا (ميوبجيكت != لاغية)
{
// تنفيذ العمليات مع الكائن
}
آخر
{
// التعامل مع الحالة عندما لا يتم تهيئة الكائن
}
إذا لم يكن متغير ميوبجيكت فارغا ، فقد تمت تهيئة الكائن ويمكنك إجراء العمليات معه بأمان. خلاف ذلك ، يمكنك التعامل مع هذا الموقف في كتلة أخرى.
يمكنك أيضا استخدام العملية الشرطية" عامل التشغيل الشرطي الفارغ " (عامل التشغيل الشرطي الفارغ) للحصول على رمز أكثر إحكاما. على سبيل المثال:
// تحقق مما إذا كان مرجع الكائن فارغا قبل الاستخدام
نتيجة فار = ميوبجيكت?.دوسوميثينغ();
// إذا كان ميوبجيكت فارغا ، فستكون النتيجة فارغة ، وإلا سيتم استدعاء طريقة دوسوميث()
في هذا المثال ، إذا كان ميوبجيكت فارغا ، فستكون النتيجة فارغا. إذا ميوبجيكت ليست فارغة ، سيتم استدعاء طريقة دوسوميثينغ () وسيتم تعيين النتيجة إلى متغير النتيجة.
سيساعدك استخدام عوامل التشغيل الشرطية على تجنب الخطأ "لم يتم تعيين مرجع الكائن على مثيل كائن" في الوحدة ، وتوفير التعامل مع المواقف غير المتوقعة وزيادة موثوقية التعليمات البرمجية الخاصة بك.
فحص الكائنات عند تحميل مستوى
- آخر
{
تصحيح.لوجيرور ("المستوى" + اسم المستوى + " غير موجود!");
- }
- }
- تسجيل الخطأ: من المهم تسجيل الأخطاء بحيث يكون من الأسهل تتبعها وتصحيحها. في الوحدة ، يمكنك استخدام التصحيح.سجل أو تصحيح.طرق لوجيرور للقيام بذلك. على سبيل المثال:
إذا (ميوبجيكت = = لاغية)
{
تصحيح.لوجيرور ("خطأ: لم يتم تهيئة ميوبجيكت!");
}
باتباع هذه التوصيات ، يمكنك تجنب الخطأ" لم يتم تعيين مرجع الكائن على مثيل كائن " وضمان تشغيل أكثر استقرارا لمشروعك في الوحدة.تعيين القيم الافتراضية للكائنات
قد يكون أحد أسباب الخطأ "لم يتم تعيين مرجع الكائن على مثيل كائن" في الوحدة بسبب الاستخدام غير السليم للكائنات التي لم يتم تعيينها على القيم الافتراضية.
عند إنشاء كائن جديد في الوحدة ، يتم تهيئته تلقائيا بقيم صفرية. ومع ذلك ، إذا لم تقم بتعيين القيم المطلوبة لكائن قبل استخدامه ، فقد يحدث الخطأ "لم يتم تعيين مرجع الكائن إلى مثيل كائن".
لتجنب هذا الخطأ ، تحتاج إلى التأكد من تعيين جميع القيم الافتراضية للكائنات التي تستخدمها في مشروعك بشكل صحيح.
ستساعدك الخطوات التالية في تعيين القيم الافتراضية للكائنات في الوحدة:
تحقق من جميع المتغيرات المستخدمة في التعليمات البرمجية الخاصة بك. تأكد من تهيئتها بشكل صحيح قبل استخدامها.
إذا كانت لديك نصوص برمجية تقوم بإنشاء مثيل للكائنات ، فتأكد من تعيين جميع القيم الضرورية للمثيلات التي يتم إنشاؤها.
استخدم الأساليب والوظائف التي توفرها الوحدة لتعيين القيم الافتراضية لخصائص الكائنات المختلفة. على سبيل المثال ، بالنسبة لمكون التحويل ، يمكنك استخدام الطرق
مجموعةالموضعالدوران
لضبط الموقف وتدوير الكائن.
تحقق من الرمز بحثا عن الأخطاء والتحذيرات المتعلقة بالكائنات التي لا تحتوي على قيم افتراضية.
باتباع هذه الخطوات ، ستتمكن من تعيين القيم الافتراضية للكائنات في الوحدة وتجنب الخطأ "لم يتم تعيين مرجع الكائن على مثيل كائن". سيسمح هذا لمشروعك بالعمل بثبات وخالية من الأخطاء.
استخدام إخراج التصحيح للعثور على خطأ
عندما تواجه الخطأ "لم يتم تعيين مرجع الكائن إلى مثيل كائن" في الوحدة ، فإن إحدى طرق إصلاحه هي استخدام إخراج التصحيح لتحديد مكان حدوث الخطأ. يسمح إخراج التصحيح للمبرمج بتتبع تنفيذ البرنامج وإخراج المعلومات حول حالة المتغيرات والقيم وتنفيذ التعليمات البرمجية.لاستخدام إخراج التصحيح في الوحدة ، يمكنك استخدام التصحيح.طريقة السجل ، التي تخرج معلومات النص إلى وحدة تحكم إخراج الوحدة. يمكنك إدراج هذه الطريقة في رمز البرنامج الخاص بك حيث ترى أنه من الضروري إخراج معلومات تصحيح الأخطاء.
ابدأ بإضافة سطر التعليمات البرمجية التالي في المكان الذي تعتقد أن الخطأ يحدث فيه:
تصحيح.سجل ("تصحيح نص الإخراج");
بعد ذلك ، ستتمكن من رؤية نص إخراج التصحيح في وحدة تحكم إخراج الوحدة ، والتي يمكن فتحها عن طريق تحديد علامة التبويب "وحدة التحكم" في أسفل نافذة الوحدة.
يمكنك استخدام إخراج التصحيح لإخراج معلومات حول قيم المتغيرات وتنفيذ أجزاء معينة من التعليمات البرمجية. على سبيل المثال ، يمكنك إخراج قيمة متغير قد يتسبب في حدوث خطأ:
تصحيح.سجل ("قيمة المتغير:" + متغير);
يمكنك أيضا طباعة رسالة قبل السطر الخاطئ من التعليمات البرمجية لتحديد متى يصل الرمز إلى هذه النقطة.:
تصحيح.السجل ("رمز الوصول إلى رقم السطر" + رقم الخط);
سيساعدك استخدام إخراج التصحيح على تضييق نطاق الخطأ وتحديد سببه. يمكنك إضافة الإخراج إلى أماكن مختلفة في التعليمات البرمجية لتتبع تنفيذ البرنامج والتحكم في قيم المتغيرات.
بالإضافة إلى استخدام إخراج التصحيح ، يجدر أيضا التفكير في طرق أخرى لإيجاد الأخطاء وتصحيحها في الوحدة ، مثل تحليل مكدس الاستدعاءات واستخدام مصحح أخطاء الوحدة. ولكن استخدام إخراج التصحيح يمكن أن يكون بداية جيدة لحل مشكلة "مرجع الكائن لم يتم تعيينه على مثيل كائن".
التحقق من التعليمات البرمجية وتصحيح الأخطاء يدويا
إذا حدث الخطأ "لم يتم تعيين مرجع الكائن إلى مثيل كائن" في الوحدة ، فأنت بحاجة إلى التحقق من التعليمات البرمجية والعثور على مكان لا تتم فيه تهيئة المتغير الذي تقوم بالوصول إليه.
الخطوة 1: توطين الخطأ
الخطوة الأولى هي تحديد الموقع الذي يحدث فيه الخطأ. تحتوي رسالة الخطأ عادة على معلومات حول سطر التعليمات البرمجية الذي حدث فيه الخطأ.
مثال:
نولريفيرينسيكسيبتيون: لم يتم تعيين مرجع الكائن إلى مثيل كائن
حركة اللاعب.تحديث () (في الأصول / البرامج النصية / بلايرموفيمنت.جيم:25)
في المثال أعلاه ، حدث خطأ في السطر 25 من البرنامج النصي بلايرموفيمنت. في هذا السطر لم يتم تعيين قيمة للمتغير.
الخطوة 2: البحث عن تهيئة متغيرة
بعد تحديد موقع الخطأ ، تحتاج إلى العثور على هذا المتغير في التعليمات البرمجية الخاصة بك والتحقق مما إذا كان قد تم تعيين قيمة له.
مثال:
الطبقة العامةحركة اللاعب: السلوك الأحادي {
العامة ريجيدبودي رب;
بداية الفراغ () {
رب = جيتكومبوننت();
}
تحديث باطل () {
(آر بي).أدفورس (0 ، 0 ، 10);
}
}
في هذا المثال ، يتم تهيئة متغير رب في طريقة ابدأ () باستخدام وظيفة جيتكومبوننت () ، الذي يحصل على إشارة إلى مكون ريجيدبودي ملزمة لكائن اللعبة التي تحتوي على هذا البرنامج النصي.
الخطوة 3: حل المشكلة
- // التعامل مع الحالة عندما لا يتم تهيئة الكائن
}
استخدام العبارات الشرطية: يمكنك استخدام العبارات الشرطية لتنفيذ التعليمات البرمجية فقط إذا تمت تهيئة الكائن. على سبيل المثال: