Ios 在游戏场景中使用视图控制器

Ios 在游戏场景中使用视图控制器,ios,objective-c,sprite-kit,Ios,Objective C,Sprite Kit,在碰撞检测之后,我需要为我的应用程序创建一个结束屏幕。最简单的方法是用按钮将结束屏幕返回到主菜单/游戏。我可以使用ViewController?我已经阅读了很多教程、视频以及这里的所有帖子: 这是我当前的代码(不是全部,只是一些重要的东西): 我希望我的终端屏幕是简单的,所以最简单的方法是最好的。谢谢大家! 对于我的游戏,我添加了一个UIViewController属性并将其分配给场景 然后可以将视图添加为子视图。例如 SKScene *scene = [SKScene sceneWithSiz

在碰撞检测之后,我需要为我的应用程序创建一个结束屏幕。最简单的方法是用按钮将结束屏幕返回到主菜单/游戏。我可以使用
ViewController
?我已经阅读了很多教程、视频以及这里的所有帖子:

这是我当前的代码(不是全部,只是一些重要的东西):


我希望我的终端屏幕是简单的,所以最简单的方法是最好的。谢谢大家!

对于我的游戏,我添加了一个UIViewController属性并将其分配给场景

然后可以将视图添加为子视图。例如

SKScene *scene = [SKScene sceneWithSize:self.view.frame.size];
scene.viewController = self;
然后在你的场景中

[self.viewController addSubview:yourView];
下面是我自己的一些游戏实现,帮助您开始

在序列图像板或XIB中(以您喜欢的为准),添加具有按钮作为视图属性的视图。在我的例子中,我有一个scoreLabel、一个menuButton和一个restartButton作为属性,可以将它们全部设置为x.hidden=YES;如我所愿,通过在场景中触发它们,例如

self.vc.menuButton.hidden = YES;
self.vc.restartButton.hidden = YES;
在您的GameViewController(UIViewController的子类)中

在你的场景中

//header
@interface MazeScene : SKScene <SKPhysicsContactDelegate>

@property (nonatomic, weak) GameViewController *vc;

@end

//class
-(id) initWithSize:(CGSize)size {
    if (self = [super initWithSize:size]) {
        //(GameViewController*) is a static cast of a subclass of UIViewController.
        [self.view addSubview:((GameViewController*)self.vc).hudView];
        // [self restartGame] is a specific method for my game, don't worry about it
        [self restartGame];
    }
    return self;
}
//头
@界面MazeScene:SKScene
@属性(非原子,弱)GameViewController*vc;
@结束
//阶级
-(id)initWithSize:(CGSize)大小{
if(self=[super initWithSize:size]){
//(GameViewController*)是UIViewController子类的静态强制转换。
[self.view addSubview:((GameViewController*)self.vc.hudView];
//[self restartGame]是我的游戏的一种特定方法,不用担心
[自我重启游戏];
}
回归自我;
}

关于如何做到这一点,有好的教程吗?我对ios编程还是很陌生。谢谢大家!@Ryanc我用自己的一些代码更新了我的答案,以帮助您开始。我没有张贴我故事板的图片,但如果你需要更多帮助,请告诉我。
//header
@interface GameViewController : UIViewController

@property (weak, nonatomic) IBOutlet UILabel *scoreLabel;
@property (weak, nonatomic) IBOutlet UIView *hudView;
@property (weak, nonatomic) IBOutlet UIButton *menuButton;
@property (weak, nonatomic) IBOutlet UIButton *restartButton;

@property (nonatomic) MazeScene *maze;

@end

//class
- (void)viewDidLoad
{
    [super viewDidLoad];

    // Configure the view.
    SKView * skView = (SKView *)self.view;

    // Debug Options
//    skView.showsFPS = YES;
//    skView.showsNodeCount = YES;
//    skView.showsPhysics = YES;

    // Create and configure the maze scene.
    CGSize sceneSize = skView.bounds.size;
    skView.ignoresSiblingOrder = YES;

    MazeScene *maze = [[MazeScene alloc] initWithSize:sceneSize];
    maze.scaleMode = SKSceneScaleModeAspectFill;
    maze.vc = self;
    [skView presentScene:maze];
    _maze = maze;
}
//header
@interface MazeScene : SKScene <SKPhysicsContactDelegate>

@property (nonatomic, weak) GameViewController *vc;

@end

//class
-(id) initWithSize:(CGSize)size {
    if (self = [super initWithSize:size]) {
        //(GameViewController*) is a static cast of a subclass of UIViewController.
        [self.view addSubview:((GameViewController*)self.vc).hudView];
        // [self restartGame] is a specific method for my game, don't worry about it
        [self restartGame];
    }
    return self;
}