[英]SpriteKit adding subview
我正在尝试使用addSubview实现游戏的暂停菜单。 但是,当我触摸“暂停”按钮时,该视图将在上一场景-DTStartMenu场景上呈现子视图,而不是实际游戏场景上的子视图。 这是ViewController.m中的代码:
-(void)viewDidLayoutSubviews{
[super viewDidLoad];
SKView * skView = (SKView *)self.view;
skView.showsFPS = YES;
skView.showsNodeCount = YES;
// Create and configure the scene.
SKScene * scene = [DTStartMenu sceneWithSize:skView.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
// Present the scene.
[skView presentScene:scene];
}
StartMenu.m中的代码
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
/* Called when a touch begins */
SKView * skView = (SKView *)self.view;
SKScene *gameScene = [DTGame sceneWithSize:skView.bounds.size];
gameScene.scaleMode = SKSceneScaleModeAspectFill;
// [self.view presentScene:gameScene transition:[SKTransition fadeWithDuration:1]];
[self.view presentScene:gameScene];
}
DTGame.m中的代码
-(void) didMoveToView:(SKView *)view {
skview = (SKView*)self.view;
}
-(void)pauseGame{
CGRect rect = CGRectMake(90, 40, 300, 200);
pauseMenu = [[DTPauseMenu alloc] initWithFrame:rect];
[skview addSubview:pauseMenu];
}
常见问题。 您无需检查视图中是否已设置场景。 尝试这个:
-(void)viewWillLayoutSubviews
{
[super viewWillLayoutSubviews];
SKView * skView = (SKView *)self.view;
if (skView.scene == nil)
{
// Setup and present the scene here....
[skView presentScene:scene];
}
}
请注意,我将其从viewDid ..更改为viewWill ..,并且还调用了正确的超级方法(您的实现称为viewDidLoad)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.