2010-04-07 9 views
6

एक्सएनए गेम्स में Unload() विधि है, जहां सामग्री को अनलोड किया जाना चाहिए। लेकिन इसका क्या मतलब है? अगर सभी सामग्री को उतार दिया जा रहा है, तो खेल बाहर निकलना चाहिए, इस मामले में सब कुछ कचरा इकट्ठा किया जाएगा, है ना?एक्सएनए: अनलोड() का बिंदु क्या है?

उत्तर

6

जहां तक ​​मैं इसे समझता हूं, यह किसी भी मानक उपयोग के लिए उपयोगी नहीं है, क्योंकि आप कहते हैं कि कचरा कलेक्टर आपके लिए चीजों से संबंधित है।

हालांकि, जब आपका गेम कई चीजों से बाहर निकलता है तो यह एक ईवेंट होता है। उदाहरण के लिए आप मल्टीप्लेयर गेम में सभी क्लाइंट्स को एक संदेश भेज सकते हैं कि आप बाहर निकल रहे हैं, और फिर आप कचरा कलेक्टर को अपने नेटवर्क कनेक्शन को मारने दे सकते हैं।

+1

सिर्फ इसलिए कि जब आप अपना प्रोग्राम बंद करते हैं तो आपकी सभी ऑब्जेक्ट्स अनलोड हो जाएंगी, इसका मतलब यह नहीं है कि आपको 'IDISposable.Dispose() 'या' (...)' का उपयोग नहीं करना चाहिए। –

+0

यह एक अच्छा मुद्दा है। – Martin

+0

आप संरक्षित गेम 1 को ओवरराइड कर सकते हैं। यह भी प्राप्त करने के लिए ईवेंट विधि को निष्पादित करना। ऑनएक्सिटिंग का उपयोग करने के लिए यह अधिक समझ में आता है, उदाहरण के लिए, गेम बंद होने पर एक संदेश भेजें। –

2

यह हमेशा अपने आप को साफ करने के लिए विनम्र है ... अन्यथा लोग आपको अपने खिलौनों के साथ खेलने से रोक देंगे।

मेरा सबसे अच्छा अनुमान यह है कि यह आपको Game ऑब्जेक्ट्स को अपने प्रोजेक्ट में घोंसला करने और आपको बाद में साफ करने का तरीका प्रदान करने की अनुमति देगा। यह आपके कोड का बेहतर पुन: उपयोग करने की अनुमति देगा। उम्मीद है कि एक्सएनए एमपीवी या एक्सएनए टीम के किसी व्यक्ति को यह मिल जाएगा और अधिक अंतर्दृष्टि प्रदान करेगा।

+0

"अगली" एक 'गेम' ऑब्जेक्ट का क्या अर्थ है? –

+0

इसका मतलब है कि मैं वसा उँगलियों 'घोंसला' ... धन्यवाद, मैं इसे ठीक कर दूंगा। –

+1

फिर भी यह इतना उपयोगी नहीं है, गेम ऑब्जेक्ट कचरा इकट्ठा होने के बाद सामग्री प्रबंधक एकत्रित किया जाएगा और इस प्रकार यह सभी सामग्री प्रबंधित करेगा। – Martin

1

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

अधिक महत्वपूर्ण बात यह है कि, खेल कक्षाओं के बजाय GameComponent कक्षाओं के लिए UnloadContent विधि। आम तौर पर, GameComponent और DrawableGameComponent ऑब्जेक्ट्स कई संसाधनों का उपयोग कर सकते हैं। जब ऑब्जेक्ट नष्ट हो जाता है, तो आपको यह सुनिश्चित करना होगा कि ऑब्जेक्ट से संबंधित सभी संसाधन नष्ट हो जाएं, रिलीज़ हों या कभी-कभी लंबित स्थिति में डाल दें।

मैं सुझाव दूंगा कि आप इसे अभी छोड़ दें। जैसे ही आप एक्सएनए विकास के साथ आगे बढ़ते हैं, और बड़े पैमाने पर परियोजनाओं के लिए, आपको अनलोड विधि का उपयोग करने की आवश्यकता हो सकती है, और आपको आवश्यक कुछ मामलों को समझना पड़ सकता है।

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