unity3d
मोनोबेहवियर वर्ग कार्यान्वयन
खोज…
कोई अतिरंजित तरीके नहीं
कारण आपको Awake
, Start
, Update
और अन्य विधि को ओवरराइड करने की आवश्यकता नहीं है, क्योंकि वे एक बेस क्लास में परिभाषित वर्चुअल तरीके नहीं हैं।
पहली बार जब आपकी स्क्रिप्ट एक्सेस हो जाती है, तो स्क्रिप्टिंग रनटाइम स्क्रिप्ट के माध्यम से यह देखने के लिए दिखता है कि क्या कुछ तरीके परिभाषित हैं। यदि वे हैं, तो उस जानकारी को कैश कर दिया जाता है और तरीकों को उनकी संबंधित सूची में जोड़ दिया जाता है। इन सूचियों को फिर अलग-अलग समयों में देखा जाता है।
प्रदर्शन के कारण ये तरीके आभासी नहीं हैं। यदि सभी लिपियों में Awake
, Start
, OnEnable
, OnDisable
, Update
, LateUpdate
, और FixedUpdate
, तो इन सभी को उनकी सूचियों में जोड़ा जाएगा, जिसका अर्थ होगा कि इन सभी विधियों को निष्पादित किया जाएगा। आम तौर पर यह एक बड़ी समस्या नहीं होगी, हालाँकि, ये सभी विधि कॉल देशी पक्ष (C ++) से प्रबंधित पक्ष (C #) के लिए होती हैं, जो एक प्रदर्शन लागत के साथ आता है।
अब यह कल्पना कीजिए, ये सभी विधियाँ उनकी सूचियों में हैं और उनमें से कुछ / अधिकांश में वास्तविक विधि निकाय भी नहीं हो सकता है। इसका मतलब यह होगा कि कॉलिंग विधियों पर भारी मात्रा में प्रदर्शन बर्बाद हो जाता है जो कुछ भी नहीं करते हैं। इसे रोकने के लिए, एकता ने आभासी तरीकों का उपयोग करने का विकल्प चुना और एक मैसेजिंग सिस्टम बनाया जो सुनिश्चित करता है कि इन विधियों को केवल तभी कॉल किया जाए जब वे वास्तव में परिभाषित हों, अनावश्यक विधि कॉल को सहेजना।
आप यहाँ पर एकता ब्लॉग पर इस मामले पर और अधिक पढ़ सकते हैं: 10000 अपडेट () यहाँ पर IL2CPP पर कॉल और बहुत कुछ: IL2CPP इंटरनल्स का एक परिचय