cocos2d iphone - संरचना के साथ खेल ऑब्जेक्ट और CCSpriteBatchNode जारी रखा



cocos2d-iphone code-organization (1)

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

आप एक ही समय में दो माता-पिता को नोड नहीं जोड़ सकते।

आप एक "कंटेनर" प्रेत बनाने के लिए क्या कर सकते हैं बनावट के साथ एक सीसीएसप्रैक्ट बनाएँ (प्रेत बैच नोड बनावट के समान) और बनावट रीक्स्ट के रूप में एक सीजीआरटीएक्टेक्टी। इससे प्रेत को कुछ भी आकर्षित नहीं किया जाता है और आप इसका उपयोग CCSpriteBatchNode में एक CCNode के रूप में कर सकते हैं।

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

क्या किसी ने निम्नलिखित परिदृश्य पर विचार किया है और मुझे सुझाव दिया है: मैं एक गेमलाइन गेम के साथ एक बुनियादी कोको 2 डी गेम को लागू कर रहा हूं जिसमें एक सीसीएसप्रिेशबैच नोड मिला है। मेरे पास एक गेम ऑब्जेक्ट है: सीसीएनोड जिसमें 3 सीसीएसप्रिटेज़ हैं जैसे:

CCSprite *bodySprite;    
CCSprite *hairSprite;   
CCSprite *eyesSprite;

GameObject प्रारंभ करते GameObject मैं GameObject को sprites को अपने बच्चों के रूप में जोड़ रहा हूँ जैसे:

[self addChild:bodySprite];
[self addChild:hairSprite];
[self addChild:eyesSprite];

इस तरह मैं नोड ( GameObject ) की स्थिति, रोटेशन आदि को बदल सकता हूं और सभी sprites को परिवर्तन से प्रभावित होगा परन्तु जब मैं एक से अधिक GameObject को दृश्य में GameObject तो "प्रत्येक प्रेत ड्रॉ स्वयं, जिसका अर्थ है प्रति प्रेत एक अतिरिक्त ड्रा कॉल "

प्रदर्शन की समस्या को ठीक करने के लिए, इस पोस्ट को पढ़ने के बाद , मैंने GameObject के sprites को GameplayLayer के CCSpriteBatchNode को इनिशियलाइजेशन पर जोड़ने का फैसला किया:

 [[GameplayLayer sharedGameplayLayer].sceneSpriteBatchNode addChild:bodySprite];
 [[GameplayLayer sharedGameplayLayer].sceneSpriteBatchNode addChild:hairSprite];
 [[GameplayLayer sharedGameplayLayer].sceneSpriteBatchNode addChild:eyesSprite];

केवल अब, मुझे GameObject के sprites की स्थिति को एक के बजाय एक के बजाय सेट करना होगा

self.position = ...

मुझे इसका उपयोग करना होगा

bodySprite.position = ...
hairSprite.position = ...
eyesSprite.postion =...

जो एक थकाऊ परिवर्तन है और मैं sprites की एक संरचना के रूप में मेरे GameObject डिजाइन किए होने के सबसे बड़े लाभों में से एक को खो देता है

प्रश्न: क्या रचनात्मक GameObject स्थिति को प्रभावित करने के लिए नोड की स्थिति का उपयोग करने का कोई तरीका है, क्या मैं उन्हें GameObject और sceneSpriteBatchNode GameObject दोनों में बच्चों के रूप में जोड़ सकता हूं? यदि नहीं, तो सही दृष्टिकोण क्या है, क्या यह एक एक के बाद एक पटरियों की स्थिति निर्धारित करता है?