对于我的游戏,我添加了 UIViewController 属性并将其分配给 SKScene。
然后您可以将视图添加为子视图。例子...
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 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;
}
在你的 SKScene 中...
//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;
}