هل تريد تمرير معلمة المستوى عند الانتقال إلى المشهد التالي؟
-
21-12-2019 - |
سؤال
أحاول اكتشاف أفضل طريقة لتمرير معلمة المستوى بين المشاهد باستخدام 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 للصفحة الفوائد التالية:
- فقط الفئة يعرف اسم ملف ccbi ذات الصلة. تتم الإشارة إلى
- ملف ccbi لإنشاء فئة معينة مرة واحدة فقط في المشروع بأكمله.
- جميع المنطق لإعداد كائن (E.G. من النوع G1GameObjectLayer) داخل الكائن نفسه.
أعتقد أنه يمكنك اتباع نهج مماثل مع Subclass CCSCENE الخاص بك.