2013-07-09 13 views
6

में जीसी का अनुक्रम और अनलोडिंग संपत्तियां कभी-कभी हमें गेम विकास में बेकार संसाधनों को मैन्युअल रूप से रिलीज़ करने की आवश्यकता होती है। लेकिन मुझे यकीन है जो बेहतर हैयूनिटी 3 डी

और

Resources.UnloadUnusedAssets(); 
System.GC.Collect(); 

AFAIK के बीच

System.GC.Collect(); 
Resources.UnloadUnusedAssets(); 

, उन दोनों async संचालन कर रहे हैं और वहाँ कोई अंतर हो सकता है नहीं कर रहा हूँ।

तो मेरे सवाल है ...

  1. वहाँ कोई अंतर है?
  2. यदि हां, तो कौन सा बेहतर है?
+0

UnloadUnusedAsset async है, लेकिन वास्तव में आप इसे समाप्त होने तक प्रतीक्षा करने के लिए उपज कर सकते हैं। – Heisenbug

उत्तर

9

इन दो प्रकारों के बीच कोई अंतर नहीं है।

System.GC.Collect(), जिन वस्तुओं पर प्रबंधित ढेर में मोनो द्वारा प्रबंधित किया जाता इकट्ठा करने के लिए नेट कलेक्टर बता देंगे, जबकि परिसंपत्तियों (बनावट, लगता है और अन्य मीडिया) जो देशी ढेर में डाल दिया जाता है के साथ Resources.UnloadUnusedAssets से संबंधित है। दोनों विधि पूरी तरह से अलग चीजें करते हैं, इसलिए कोई अलग नहीं है जिसे पहले निष्पादित किया जाएगा। (जैसा कि आपने कहा था, वे दोनों एसिंक हैं और आपने सिस्टम को सुझाव देने के लिए सिर्फ एक ध्वज सेट किया है, यह संग्रह करने का अच्छा समय हो सकता है।)

वास्तव में, जीसी को स्वयं को इकट्ठा करना इतना आम नहीं है, सिवाय इसके कि आपके पास एक अच्छा कारण है। सिस्टम का जीसी उचित समय पर काम करेगा, कचरा इकट्ठा करने के लिए बुलाए जाने वाले अधिकांश लोग आपके विचार के अनुसार आवश्यक नहीं हैं।

यदि आप एकता की स्मृति के बारे में अधिक सोच रहे हैं, तो आप this blog देख सकते हैं, जो आपको चीजों को विस्तार से बता सकता है।

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