2014-04-04 11 views
6

जैसा कि मैंने SpriteKit बनावट के बारे में जानकारी के लिए चारों ओर देख रहा था, और मैं इस बोली पर ठोकर खाई:spritekit के साथ एकल ड्राइंग पास में नोड्स रेंडर?

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

लेकिन यह बाहर की जाँच:

एक ही बनावट (मैं विश्वास दिलाता हूं कि आप इसे एक बनावट है, न सिर्फ एक रंग) Untextured tiles

अपने स्वयं के बनावट के साथ टाइलें साथ टाइलें Textured tiles

ड्रॉ गिनती में 40 का अंतर होता है, हालांकि उपयोग किए गए सभी बनावट एक ही एटलस से आए थे।

क्या मैं 'एटलस' शब्द को गलत समझ रहा हूं?

यह वह जगह है जहां मैं अपने छवियों की दुकान:

texture atlas

मेरे उदाहरण एक है 'बनावट एटलस,' या 'एटलस' यहाँ एक भी .png कि सभी आवश्यक चित्र शामिल की परिभाषा है, और व्यक्तिगत टाइल्स इसे से काटा जाता है?

या शायद समस्या है कि मैं कैसे लोड/कुछ और कर रहा हूं?

धन्यवाद!

उत्तर

5

यहां समस्या नोड ग्राफ़ की वजह से सबसे अधिक संभावना है। मान लें कि दृश्य के बच्चों के रूप में आपके पास 100 sprites हैं, उनके स्वयं के उप-बच्चे नहीं हैं, और वे सभी एक ही एटलस और डिफ़ॉल्ट मिश्रण मोड से बनावट का उपयोग करते हैं, फिर स्प्राइट किट एक ही ड्रॉ कॉल में इन 100 sprites को बैच-ड्रॉ करेगा।

हालांकि अगर इन टाइल स्प्राइट्स के पास अपने स्वयं के बच्चे हैं, शायद डिबगिंग के लिए आकार या लेबल नोड्स हैं, तो यह बैच ड्राइंग ऑपरेशन को "बाधित" करेगा।

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

यदि यह काम नहीं करता है, तो सत्यापित करें कि tiles.atlas फ़ोल्डर को बंडल में एक बनावट एटलस में सही रूप से परिवर्तित किया गया है। यदि आप संकलित ऐप बंडल खोलते हैं तो आपको एक टाइल के साथ 'tiles.atlasc' नामक एक फ़ोल्डर और उसमें एक या अधिक पीएनजी फाइलें मिलनी चाहिए, जिसमें फ़ोल्डर की सभी व्यक्तिगत छवियां होंगी। इसके अलावा इन व्यक्तिगत छवियों में से कोई भी बंडल में दिखाई नहीं देना चाहिए - अगर उन्हें बंडल में एटलस के समान नामों का उपयोग करके अलग-अलग फ़ाइलों के रूप में जोड़ा जाता है, तो स्प्राइट किट बनावट एटलस से प्राप्त करने के बजाय व्यक्तिगत छवि फ़ाइलों को लोड करने के लिए डिफ़ॉल्ट होगा ।

+0

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

+0

उम ... मुझे एक और चीज़ के साथ मदद करें। इस तरह बनावट बनावट अविश्वसनीय रूप से अक्षम लगता है।स्प्राइट्स को शुरू करने से अब मेरे लिए बहुत अधिक समय लगता है, क्योंकि टाइल मैप को लगातार चलने और उत्पन्न होने की आवश्यकता होती है। इस तरह के एक स्प्राइट को शुरू करने का सबसे तेज़ तरीका क्या है? – IAmTheAg

+1

अच्छी तरह से, यदि आप ..imageNamed चलाते हैं: विधि बहुत अधिक (स्प्राइट और बनावट/textureatlas दोनों के लिए) जो संभावित रूप से बहुत अधिक ओवरहेड बना सकता है। मेरे टाइलमैप के लिए मैं एटलास को एक मजबूत रेफरी में रखता हूं, और त्वरित पहुंच के लिए एक सरणी (जीआईडी ​​द्वारा अनुक्रमित) में बनावट रखता हूं। कोबॉल्ड किट में टाइलमैप रेंडरर पर एक नज़र डालें। – LearnCocos2D

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