2016-01-07 4 views
12

मुझे लगता है कि हम Awake() या Start() और Awake() में वैरिएबल प्रारंभ कर सकते हैं Start() से पहले कॉल किया जाएगा।जागृत() और प्रारंभ()

सर्वोत्तम प्रदर्शन करने के लिए हमें Awake और Start में प्रारंभ करना कब चाहिए?

उत्तर

12

आमतौर पर जागृत() का उपयोग शुरू करने के लिए किया जाता है यदि कुछ मूल्य या स्क्रिप्ट एक-दूसरे पर निर्भर हैं और उनमें से एक को बहुत देर हो चुकी है (गेम शुरू होने से पहले जागृत हो जाता है)। जागृत हर स्क्रिप्ट उदाहरण के लिए केवल एक बार भी कहा जाता है।

मुझे प्रलेखन बोली करते हैं:

[...] जाग कहा जाता है के बाद सभी वस्तुओं प्रारंभ कर रहे हैं ताकि आप सुरक्षित रूप से अन्य वस्तुओं के लिए बोलते हैं या जैसे का उपयोग कर उन्हें क्वेरी कर सकते हैं। GameObject.FindWithTag। प्रत्येक गेम ऑब्जेक्ट का जागृत वस्तुओं के बीच एक यादृच्छिक क्रम में कहा जाता है। इस वजह से, आपको स्क्रिप्ट के बीच संदर्भ सेट अप करने के लिए जागरूकता का उपयोग करना चाहिए, और किसी भी जानकारी को आगे और आगे पास करने के लिए स्टार्ट() का उपयोग करना चाहिए। जागरूकता हमेशा किसी भी प्रारंभिक कार्यों से पहले बुलाया जाता है। यह आपको स्क्रिप्ट के प्रारंभिकरण को ऑर्डर करने की अनुमति देता है। जागरूकता कोरआउट के रूप में कार्य नहीं कर सकती है।

और प्रारंभ() के बारे में:

प्रारंभ फ्रेम पर कहा जाता है जब एक स्क्रिप्ट सक्षम है बस से पहले तरीकों अद्यतन के किसी भी पहली बार कहा जाता है।

जागरूक फ़ंक्शन की तरह, स्टार्ट के जीवनकाल में प्रारंभ में एक बार कहा जाता है। हालांकि, जब स्क्रिप्ट सक्षम है या नहीं, इस पर ध्यान दिए बिना, स्क्रिप्ट ऑब्जेक्ट प्रारंभ होने पर जागृत कहा जाता है। प्रारंभ प्रारंभिक समय पर सक्षम सक्षम नहीं है, तो उसी फ्रेम पर जागृत नहीं किया जा सकता है।

कहाँ अंतिम भाग एक बड़ा अंतर

आप को प्राप्त करने के लिए बनाता है सवाल: स्क्रिप्ट नहीं है

तो अपने खेल की शुरुआत में सक्षम है, और आप की जरूरत नहीं है आरंभ करने के लिए चर, प्रारंभ प्रदर्शन को जागृत करने के रूप में शुरू किया जाएगा (
प्रत्येक चर को बहुत शुरुआत में शुरू किया जाएगा nning। कम से कम यह तार्किक धारणा है जो मैं करता हूं।

+0

मुझे यह जवाब पसंद है। 'स्टार्ट()' में सब कुछ करने का मतलब यह होगा कि कुछ भी * बर्बाद नहीं हुआ * (यानी उन चीजों को शुरू करना जो कभी भी उपयोग नहीं हो सकते हैं), हालांकि यह पहले फ्रेम में थोड़ा सा अंतराल हो सकता है? – trojanfoe

+0

जागने के लिए भी कहा जा सकता है, जो पहले फ्रेम के बजाय लोडिंग समय को प्रभावित करेगा। – Minzkraut

+0

यूप। मुझे लगता है कि यह एक संतुलन है। हालांकि मुझे लगता है कि 'जागृत()' में देरी थोड़ा कम ध्यान देने योग्य होगा। – trojanfoe

1

इस विषय को आधिकारिक दस्तावेज (Awake और Start) में अच्छी तरह वर्णित किया गया है।

यह खंड बताता है कि क्यों आप दो कार्यों पड़ सकता है:

Awake समारोह दृश्य में सभी वस्तुओं पर कहा जाता है किसी भी वस्तु की Start समारोह कहा जाता है से पहले। यह तथ्य उन मामलों में उपयोगी है जहां ऑब्जेक्ट ए के प्रारंभिक कोड को ऑब्जेक्ट बी पर पहले से ही पर भरोसा करने की आवश्यकता है; बी की शुरुआत Awake में की जानी चाहिए जबकि ए Start में किया जाना चाहिए।

Awake और Start के बीच अंतर यह है कि Start कहा जाता है केवल जब एक स्क्रिप्ट सक्षम है।

इन दो कार्यों को पहले Update विधि से पहले बुलाया जाता है और उनके बीच कोई प्रदर्शन अंतर नहीं होता है। मैं कहूंगा कि Awake का उपयोग सभी ऑब्जेक्ट्स (कन्स्ट्रक्टर की तरह) को शुरू करने के लिए किया जाता है, और Startलिंक ऑब्जेक्ट्स या गेम शुरू होने से पहले कुछ करने के लिए उपयोग किया जाता है।

1

जागृत सीटीआर के बराबर है। इसे किसी अन्य विधि से पहले, एक मोनोबेवियर बनाया जाता है।

पहली बार मोनोबेवियर सक्रिय होने पर प्रारंभ होता है। यह जागृत या लंबे समय के बाद सही हो सकता है। यह उन क्रियाओं को करने की अनुमति देता है जो ऐप या ऑब्जेक्ट्स की वर्तमान स्थिति से संबंधित हैं।

उदाहरण के लिए, आप जागरूक बनाते हैं, जागृत में, आप मूलभूत प्रारंभिक सब कुछ डालते हैं। फिर, जागरूक के अंत में दुश्मन निष्क्रिय हो गया है। बाद में, दुश्मन सक्रिय होने वाला है, लेकिन यदि खिलाड़ी के पास कुछ विशिष्ट हथियार है तो आप इसे लाल बनाना चाहते हैं, तो आप इसे प्रारंभ में करते हैं।

ऑनएनेबल स्टार्ट के समान है लेकिन प्रत्येक सेटएक्टिव (सत्य) पर होता है और सक्षम होने पर शुरू होता है। उदाहरण के लिए खिलाड़ी मैग्ना के आधार पर स्तर पर रंग बदलने के इच्छुक यह आपके दुश्मन के लिए एक उम्मीदवार हो सकता है।

संबंधित मुद्दे