我不知道是否有人還在檢查這個,但我相信我有另一種方法來解決這個問題。
我做了一個自定義的「PauseScene」,用戶可以設置返回場景,這意味着當您準備返回時,PauseScene的視圖將呈現返回場景。下面的代碼:
PauseScene.h
#import "MAScene.h"
@interface PauseScene : MAScene
@property (weak, nonatomic, readonly) SKScene * returnScene;
-(void)setReturnScene:(SKScene *)otherScene;
@end
PauseScene。米
#import "PauseScene.h"
#import "MASpriteButton.h"
@interface PauseScene()
@property (strong, nonatomic) MASpriteButton * resumeButton;
@end
@implementation PauseScene
-(void)setReturnScene:(SKScene *)otherScene
{
_returnScene = otherScene;
}
-(void)didMoveToView:(SKView *)view
{
[self createContent];
}
-(void)createContent
{
__weak typeof(self) weakMe = self;
MASpriteButton * resume = [[MASpriteButton alloc] initWithBackgroundImageNamed:@"cardback.png" andSelectedImageNamed:@"cardback.png" andCallbackBlock:^{
NSLog(@"removing...");
[weakMe.view presentScene:self.returnScene];
}];
resume.size = CGSizeMake(self.widthToHeightRatio * 20, self.heightToWidthRatio * 20);
resume.position = CGPointMake(self.size.width/2, self.size.height/2);
self.resumeButton = resume;
[self addChild:self.resumeButton];
[self setBackgroundColor:[UIColor blueColor]];
}
@end
我用它當用戶在遊戲場景中點擊暫停按鈕,我把這些線的方式:
self.paused = YES;
PauseScene * pScene = [[PauseScene alloc] initWithSize:self.size];
[pScene setReturnScene:self];
[self.view presentScene:pScene];
注意,self
這個小塊是遊戲場景。
通過讓暫停場景保持一個指向遊戲場景的弱指針,當暫停場景被解除分配時,它可以保持一個指向返回場景的指針而不釋放它。
PS MAScene類只是SKScene類的一個小擴展,我只是給它添加了一些東西。如果有人想要,也只是讓我知道。
你有任何指南鏈接或知道的方式,可能有助於獲得一個模式的視圖控制器在SpriteKit工作? 感謝您的幫助。 –
嗯。我從來沒有親自做過,但我會編輯我的帖子以包含一些代碼。 – Monkeyanator
另外這個方法的問題是我如何去從一個SKScene發送信息到下一個。我不需要在ViewController上設置屬性,然後在下一個SKView上檢索它們嗎? 或者也許只是使用NSUserDefaults。 –