수준을 전달하는 매개변수 때 전환하는 다음을까요?
-
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로 만든 게임에서 게임 플레이 요소를 관리하는 CLASS GAMEOBJECTLAYER 클래스 메소드 loadWithLevelID:levelID
를 추가했습니다.
@implementation GameObjectLayer {
G1LevelID * _levelID;
}
// load a Luminetic Land game object layer
+ (instancetype)loadWithLevelID:(G1LevelID*)levelID {
NSString * levelFileName = ... builds levelFileName from levelID;
GameObjectLayer * gol = (GameObjectLayer*) [CCBReader nodeGraphFromFile:levelFileName];
[gol setLevelID:levelID];
return gol;
}
- (void)setLevelID:(G1LevelID*)levelID {
_levelID = levelID;
}
.
이제 gameObjectlayer를 입력 할 수 있습니다
GameObjectLayer * gol = [GameObjectLayer loadWithLevelID:levelID];
.
일반적으로 CCBI 파일을 매핑하는 클래스에 "로드"메소드를 추가하는 이점을 제공합니다.
- 클래스 만 관련 CCBI 파일의 이름을 알고 있습니다.
- 주어진 클래스를 만드는 CCBI 파일은 전체 프로젝트에서 한 번만 참조됩니다.
- 객체를 설정하는 모든 논리 (예를 들어, g1gameObjectlayer 유형)는 객체 자체 안에 있습니다.
CCSCENE 서브 클래스와 비슷한 접근 방식을 따를 수 있다고 생각합니다.
제휴하지 않습니다 StackOverflow