Spritekit不会显示呈现的场景

时间:2016-03-27 12:09:18

标签: ios objective-c xcode sprite-kit skscene

我遇到了问题。当我在spritekit中呈现一个新场景时(带有目标c)它只显示一个灰色的颜色,屏幕上有节点和fps计数。

我在.sks文件中为场景设置了动画,所以它不应该像这样。 当我呈现新场景时的过渡也有效,但它不会显示我在.sks文件中设置动画的图像和背景。

以下是我如何做的代码。

//In gameviewcontroller.m

// Creating and configuring the scene.
GameScene *Level1 = [GameScene nodeWithFileNamed:@"GameSceneLevel1"];
Level1.scaleMode = SKSceneScaleModeAspectFill;



 //  GameScene.m inside touchesbegan

 SKTransition *reveal = [SKTransition doorwayWithDuration:4];


        GameScene *Level1 = [GameScene sceneWithSize:self.view.bounds.size];
        Level1.scaleMode = SKSceneScaleModeAspectFill;
        [self.view presentScene:Level1 transition:reveal];

1 个答案:

答案 0 :(得分:0)

您最初从 .sks 文件中加载了场景,正如您所说,那里有一些动画。稍后,(在touchesBegan内)您通过提供大小(使用sceneWithSize静态方法)来创建场景。因此,场景不会从存档中加载。

要解决此问题,请在GameViewController

中加载您最初的场景

修改

要在两个场景之间切换,您必须创建两个.sks个文件。你可以这样命名:MenuScene和GameScene(默认情况下你已经有了这个)。请注意,在创建这些文件时,您不必编写扩展名(.sks),而只需编写文件名。然后,您必须创建相应的.m.h文件。因此,请创建MenuScene.mMenuScene.hGameScene和.m文件默认存在。

.h应该是MenuScene的子类(不一定是直接子类)。

然后在视图控制器内部:

SKScene

如果你想转换到- (void)viewDidLoad { [super viewDidLoad]; SKView * skView = (SKView *)self.view; GameScene *scene = [GameScene nodeWithFileNamed:@"GameScene"]; scene.scaleMode = SKSceneScaleModeAspectFill; scene.size = skView.bounds.size; [skView presentScene:scene]; } ,你可以在GameScene的touchesBegan方法中稍后执行以下操作:

MenuScene

同样,要转换回MenuScene *nextScene = [MenuScene nodeWithFileNamed:@"MenuScene"]; SKTransition *transition = [SKTransition fadeWithDuration:3]; [self.view presentScene:nextScene transition:transition]; ,请在MenuScene的GameScene中执行此操作:

touchesBegan

当然,在每次转换之前,您可以设置场景的比例模式以匹配旧场景的比例模式。

从您的代码中,您似乎正在尝试转换到同一场景:GameScene *nextScene = [GameScene nodeWithFileNamed:@"GameScene"]; SKTransition *transition = [SKTransition fadeWithDuration:3]; [self.view presentScene:nextScene transition:transition]; - > GameScene。这当然是可能的,但你确定你想要吗?

如果是这样,只需使用我为MenuScene的GameScene方法提供的代码。