هل تريد تمرير معلمة المستوى عند الانتقال إلى المشهد التالي؟

StackOverflow https://stackoverflow.com//questions/25014279

سؤال

أحاول اكتشاف أفضل طريقة لتمرير معلمة المستوى بين المشاهد باستخدام Spritebuilder وCocos2D في Xcode.

أنا أستخدم الكود القياسي أدناه للانتقال بين المشاهد.

[[CCDirector sharedDirector] replaceScene:[CCBReader loadAsScene:@"Gameplay"]];

أي مساعدة سوف تكون محل تقدير كبير.

هل كانت مفيدة؟

المحلول

على افتراض أن Gameplay.ccb لديه GameplayClass تم تعيينها كفئة مخصصة لها، وهذه الفئة لها خاصية مسماة currentLevel, ، يمكنك الوصول إلى المثيل وتعيين المستوى كما يلي:

CCScene* theScene = [CCBReader loadAsScene:@"Gameplay"];
GameplayClass* game = (GameplayClass*)theScene.children.firstObject;
game.currentLevel = 3;

[[CCDirector sharedDirector] replaceScene:theScene];

لاحظ أنه بحلول الوقت currentLevel تم تعيين GameplayClass سيكون قد تم تشغيله بالفعل init و didLoadFromCCB الأساليب منذ ذلك يحدث خلال loadAsScene.إذا كنت بحاجة إلى مزيد من تجاوز معالجة init onEnter في GameplayClass:

-(void) onEnter
{
    [super onEnter]; // must call super

    switch (self.currentLevel)
    {
        // other switches omitted...

        case 3:
            // your level 3 code here
            break;
    }
}

نصائح أخرى

في لعبتي (مصنوعة من Cocos2D 2.0 + Cocosbuilder) أضفت طريقة الفصل الدراسي GuardacetagCode إلى Class GamebjectLayer الذي يدير عناصر اللعب:

giveacodicetagpre.

حتى الآن يمكنني إنشاء كتابة gamebjectlayer

giveacodicetagpre.

بشكل عام، إضافة طريقة "تحميل" إلى الفئات التي توفرها ملفات CCBI للصفحة الفوائد التالية:

  1. فقط الفئة يعرف اسم ملف ccbi ذات الصلة.
  2. تتم الإشارة إلى
  3. ملف ccbi لإنشاء فئة معينة مرة واحدة فقط في المشروع بأكمله.
  4. جميع المنطق لإعداد كائن (E.G. من النوع G1GameObjectLayer) داخل الكائن نفسه.
  5. أعتقد أنه يمكنك اتباع نهج مماثل مع Subclass CCSCENE الخاص بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top