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;
}