मैं उलझन में हूं और coroutines (यूनिटी 3 डी और शायद अन्य स्थानों में) के बारे में उत्सुक हूं। कोरआउट एक नया धागा है? एकता के documentation उन्होंने कहा:यूनिटी 3 डी में कोरआउट एक नया धागा है?
एक coroutine एक समारोह है कि इसके निष्पादन (उपज) को निलंबित कर सकते हैं जब तक दिए गए YieldInstruction खत्म है।
और वे सी # उदाहरण here है:
ऊपर के उदाहरण है, जो लाइन coroutine है में:
using UnityEngine; using System.Collections; public class example : MonoBehaviour { void Start() { print("Starting " + Time.time); StartCoroutine(WaitAndPrint(2.0F)); print("Before WaitAndPrint Finishes " + Time.time); } IEnumerator WaitAndPrint(float waitTime) { yield return new WaitForSeconds(waitTime); print("WaitAndPrint " + Time.time); } }
मैं इस उदाहरण के बारे में कई प्रश्न हैं?
WaitAndPrint()
एक कोरआउट है?WaitForSeconds()
एक कोरआउट है?इस पंक्ति में:
yield return new WaitForSeconds(waitTime);
, क्योंyield
औरreturn
दोनों मौजूद हैं? मैंने Unity documentation में पढ़ा है कि "उपज कथन एक विशेष प्रकार की वापसी है, जो सुनिश्चित करता है कि अगली बार उपज स्टेटमेंट के बाद यह कार्य लाइन से जारी रहेगा।" यदिyield
एक विशेषreturn
है, तोreturn
क्या है?हमें
IEnumerator
क्यों वापस करना है?क्या
StartCoroutine
एक नया धागा शुरू करता है?उपरोक्त उदाहरण में
WaitAndPrint()
कितनी बार बुलाया गया है?yield return new WaitForSeconds(waitTime);
वास्तव में वापस आया था? यदि हां तो मुझे लगता है कि उपरोक्त कोड मेंWaitAndPrint()
को दो बार बुलाया गया था। और मुझे लगता है किStartCoroutine()
कई बारWaitAndPrint()
पर कॉल कर रहा था। हालांकि, मैंने another Unity documentation देखा जो कहता है: "उपरोक्त कथन का उपयोग करके किसी भी बिंदु पर कोरआउटिन को निष्पादित किया जा सकता है। उपज वापसी मूल्य निर्दिष्ट होता है जब कोरआउट शुरू होता है।" ये शब्द मुझे महसूस करते हैं किWaitAndPrint()
वास्तव में वापस नहीं आया है; यह केवल रोका गया था; यह वापस आने के लिएWaitForSeconds()
के लिए इंतजार कर रहा था। यदि यह मामला है, तो उपर्युक्त कोडWaitAndPrint()
में केवल एक बार बुलाया गया था, औरStartCoroutine
फ़ंक्शन शुरू करने के लिए केवल ज़िम्मेदार था, इसे कई बार कॉल नहीं किया गया था।
आपके शीर्षक में प्रश्न के उत्तर में, coroutines ** नहीं ** एक नया धागा शुरू करें और अपने आप में धागे से कोई संबंध नहीं है। यह मत भूलना कि यूनिटी 3 डी मौलिक रूप से फ्रेम आधारित है .. मोनोहेवियोर एक फ्रेम आधारित अवधारणा है। Coroutines - एकता में - मूल रूप से इस प्रतिमान से जुड़े हुए हैं। धागे पूरी तरह से uninvolved हैं। – Fattie
मैं इस ट्यूटोरियल पर ठोकर खा रहा हूं http://www.unitygeek.com/coroutines-in-unity3d/, यह unity3d –