उत्तर
मुझे सीधे अपने सवाल का जवाब देकर शुरू करें:
यह काम करता है, क्या मैं त्रुटि को अनदेखा कर सकता हूं?
आप कर सकते थे । आपको नहीं करना चाहिए , क्योंकि इसका मतलब है कि कुछ गलत हो रहा है। आपको इस त्रुटि की आदत हो जाएगी, लेकिन यह "छिपा" सकता है या किसी अन्य त्रुटि का कारण बन सकता है।
वर्तमान में आपके पास एक त्रुटि संदेश है और यह अभी भी सही ढंग से काम करता है। दूसरे तरीके से, यह काम नहीं कर रहा है और (या नहीं: पहचान नहीं रहा है) प्रतिक्रिया क्यों, बहुत बुरा है!
सलाह
यह पता लगाने के लिए कि यह कहाँ से आता है, इस पूरी चीज़ को कई लाइनों में विभाजित करें।
string resourceLocation = "Prefabs/Items/" + someName;
Object prefab = Resources.Load(resourceLocation);
Object instance = Instantiate(prefab);
GameObject someObject = instance as GameObject;
एक त्रुटि केवल आपको बताती है कि यह किस रेखा पर हुआ। यदि इस कोड में त्रुटि होती है, तो लाइन नंबर आपको इस बारे में अधिक बताएगा कि कौन सा हिस्सा यहां गलत हुआ। इसके अलावा, मैं इसके सामान्य संस्करण का उपयोग करने की सलाह Resources.Load
दूंगा, जो वास्तव में हमें चिंता करने के लिए एक कदम कम देगा:
string resourceLocation = "Prefabs/Items/" + someName;
GameObject prefab = Resources.Load<GameObject>(resourceLocation);
GameObject someObject = Instantiate(prefab);
क्यों खोज रहे हैं
- अब, यूनिटी का थोड़ा सा अनुभव हमें बताता है कि "आप जिस वस्तु को इंस्टेंट करना चाहते हैं वह अशक्त है"
Instantiate()
।
- तो, इसका मतलब
prefab
है कि null
।
- तो इसका मतलब है कि
Resources.Load
रिटर्न null
।
- के लिए दस्तावेज़
Resources.Load
कहते हैं, " रिटर्न में संपत्ति path
अगर यह पाया जा सकता है अन्यथा अशक्त देता है। "
- तो इसका मतलब है कि यह दिए गए मार्ग को नहीं खोजता है (स्ट्रिंग जिसे मैंने कहा था
resourceLocation
)
इस रास्ते में कुछ गड़बड़ है, इसलिए स्पष्ट पहला कदम यह देखना होगा कि यह वास्तव में डेब्यू के साथ समाप्त होता है। जैसा कि "सब कुछ इरादा के अनुसार काम करता है", इसकी संभावना है कि कुछ दोहराव चल रहा है जहां एक संस्करण काम करता है और दूसरा आपको यह त्रुटि देता है।
उस स्थिति में, डीबग.लॉग के 2 पैरामीटर संस्करण का उपयोग करना एक अच्छा विचार है Debug.Log(resourceLocation, gameObject);
। अब यदि आप एकता संपादक में लॉग संदेश पर क्लिक करते हैं, तो यह चयन करेगा GameObject
कि यह कहां से आया है।