स्टार्लिंग एएस 3: बहुत सारे बनावट, स्मृति चेतावनी आईओएस

मैं स्टार्लिंग में एसेट मैनेजर क्लास का उपयोग कर 600-700 पीएनजी फाइलों के बहुत सारे बनावट लोड करने के लिए उपयोग कर रहा हूं। सभी फाइलें शुरू होने पर लोड नहीं होती हैं और मैं छवियों को पकड़ने के लिए एकाधिक एसेट प्रबंधक का उपयोग करता हूं। शुरुआत में यह लगभग 70 छवियों को 3 अलग-अलग प्रबंधकों तक लोड करता है और जब यह लोड हो रहा है तो मुझे आईओएस पर कुछ स्मृति चेतावनियां मिलती हैं।

      
  • आईफोन ऐपनाम [644]: स्मृति चेतावनी प्राप्त हुई।
  •   
  • आईफोन ऐपनाम [644]: एप्लिकेशन को सिस्टम से स्मृति चेतावनी मिली।
  •   
  • आईफोन स्प्रिंगबोर्ड [74]: स्मृति चेतावनी प्राप्त की।
  •   
  • आईफोन मोबाइलफोन [199]: स्मृति चेतावनी प्राप्त की।
  •   

मैंने उन्हें एक ही समय में लोड करने का प्रयास किया है और दूसरा लोड पूरा होने पर प्रत्येक लोड को शुरू करने का प्रयास किया है। मैंने System.gc() भी कोशिश की है; और System.pauseForGCIfCollectionImminent (0.1); प्रत्येक लोड के बीच, इसने आईफोन 5 (7.0.4) पर समस्या तय की लेकिन आईफोन 3gs (6.1.3) पर नहीं।

स्टार्लिंग संस्करण: 1.4.1

किसी को भी इसे हल करने के बारे में कोई सुझाव मिला है?

0

3 उत्तर

आपको 600-700 छवियों को लोड नहीं करना चाहिए। भले ही वे सफलतापूर्वक लोड हो जाएं, आपको प्रदर्शन के साथ बहुत सारी समस्याएं होंगी। इसके बजाय, एटलस/स्प्राइट चादरों का उपयोग करें।

http://wiki.starling-framework.org/manual/textures_and_images

और यहां तक ​​कि अधिक अनुकूलित काम के लिए, पीएनजी के बजाय एटीएफ बनावट का उपयोग करें।

http://wiki.starling-framework.org/manual/atf_textures

0
जोड़ा
@Erik अच्छी तरह से, मोबाइल फोन, विशेष रूप से पुराने, में स्मृति क्षमता सीमित है और यह मामला हो सकता है कि आप इसे पार कर रहे हैं। मैं सुझाव दूंगा कि आप एटीएफ बनावट के साथ प्रयास करें और देखें कि यह कैसे जाता है ...
जोड़ा लेखक GeorgeCross, स्रोत
हां, मैंने यह पता लगाया है लेकिन अब मैं केवल दो एसेट मैनेजर्स, 31 पीएनजी के साथ परीक्षण कर रहा हूं, सभी छवियों में 2 की शक्ति है और आईफोन 3 जीएस (6.1.3) पर स्मृति चेतावनी अभी भी दिख रही है।
जोड़ा लेखक Erik, स्रोत

आमतौर पर एक मोबाइल विकास दृष्टिकोण से "कभी भी एक आकार फिट नहीं होता" समाधान कभी नहीं होता है। कई अलग-अलग स्क्रीन आकार और हार्डवेयर कॉन्फ़िगरेशन हैं। इन कई डेवलपर्स का मुकाबला करने के लिए पहले से उल्लेख किया जाएगा, स्प्राइट शीट । इस विधि का उपयोग करने के लिए एप्लिकेशन को केवल एक छवि को लोड करना होगा -इसके मामले में सैकड़ों। छवि लोडर GPU- पर एक बनावट अपलोड करने के लिए मेमोरी एड्रेस से कनेक्ट करते समय काफी समय लेते हैं- मैं यह भी छवि नहीं लगा सकता कि यह कितनी धीमी है कि वह कितनी धीमी हो।

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

यहां बहु-रिज़ॉल्यूशन विकास पर स्टार्लिंग विकी का एक लिंक दिया गया है।

उपरोक्त वर्णित "बेहतर के लिए" एक परियोजना में किए गए सभी परिवर्तनों में से सूची में बहुत अधिक है।

0
जोड़ा
हाँ, मदद के लिए धन्यवाद! मैंने इसके बजाए स्प्राइट चादरें बनाई हैं और यह बेहतर काम करती है। मैंने ध्वनि की लोडिंग का पुनर्निर्माण भी किया है। शुरुआत से मैंने एक ही समय में सभी आवाज़ें लोड की हैं। लेकिन उन्हें आवश्यक होने से ठीक पहले लोड करना इससे बहुत सारी मेमोरी बचाई गई।
जोड़ा लेखक Erik, स्रोत

यदि आप अपने ऐप के विरुद्ध एक्सकोड इंस्ट्रूमेंट्स चलाते हैं तो आपको डिवाइस का कुल भार दिखाई देगा, जो असली मीट्रिक है जो यह निर्धारित करता है कि आप कितनी बार स्मृति चेतावनियां प्राप्त करते हैं।

यदि आपका कुल भार% 80% से ऊपर है, तो निरंतर स्मृति चेतावनियों की अपेक्षा करें। जीसी फ्रेमरेट में कठोर क्लिपिंग के कारण हर बार कोशिश करेगा और दौड़ेंगे।

इसके बारे में एक बग है और एडोब इस पर काम कर रहा है, लेकिन मुख्य समाधान केवल कम स्मृति का उपयोग करना है। कम संकल्प वाले उपकरणों के लिए डाउनस्केल बनावट, आदि ...

https://bugbase.adobe.com/index.cfm?event=bug&id=3649713

0
जोड़ा