我遇到了问题。当我在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];
答案 0 :(得分:0)
您最初从 .sks 文件中加载了场景,正如您所说,那里有一些动画。稍后,(在touchesBegan
内)您通过提供大小(使用sceneWithSize
静态方法)来创建场景。因此,场景不会从存档中加载。
要解决此问题,请在GameViewController
。
修改强>
要在两个场景之间切换,您必须创建两个.sks
个文件。你可以这样命名:MenuScene和GameScene(默认情况下你已经有了这个)。请注意,在创建这些文件时,您不必编写扩展名(.sks
),而只需编写文件名。然后,您必须创建相应的.m
和.h
文件。因此,请创建MenuScene.m
和MenuScene.h
。 1}} GameScene
和.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
方法提供的代码。