2016-04-30 101 views
-1

我已经看过SpriteKit中几个不同的帖子周边菜单系统,没有真正关注如何从开始到结束(基本播放按钮开始游戏,背景,然后共享图标) 。SpriteKit中的游戏菜单系统

我在寻找的原因是我是初学者,并且正在构建我的第一个基础游戏。我已经使用了一些这些指南,但似乎没有一个适当的步骤。

认为这将是一件好事,为所有初学者创建一个开始。我尝试了一些实际的代码,但它没有成功(很多错误,尽管我可以发布,如果任何人有兴趣看看不该做什么)。

无论如何,这里一无所有在此先感谢所有人,让我们看看我们如何完成它!

回答

1

好吧,我相信这是一个很好的问题,在这里设置一些答案并不是一个坏主意。我在这个非常简单的菜单中设置了一个带有标题和三个按钮的开始菜单。稍后可以修改为期望的结果。首先通过在左侧的项目窗格中添加文件来为开始菜单创建一个新文件。然后创建一个spritekitScene也具有相同的名称(startMenu或任何你想命名它),然后对设置做相同的操作,也可以在开始菜单中添加学分或任何其他项目。

下一步是将游戏的切入点从游戏场景切换到视图控制器swift中的开始菜单。改变游戏场景为你在这一行if let scene = GameScene(fileNamed:"GameScene")if let scene = StartMenu(fileNamed:"StartMenu")之间命名你的菜单,这将推动开始菜单而不是游戏场景。去开始菜单并添加下面的代码来创建一个标题和按钮到视图。我创建了按钮和文本,并为每个按钮添加了单独的功能,以便于后续处理,然后在最后添加选择器的功能,以便在按下按钮时推动新场景。你也可以为这些场景添加一个返回按钮,或者做任何你想要的东西。所以这里是完整的开始菜单代码:

import Foundation 
import SpriteKit 

class StartMenu : SKScene { 

var btnPlay : UIButton! 
var btnSettings : UIButton! 
var btnCredits : UIButton! 
var gameTitle : UILabel! 

override func didMoveToView(view: SKView) { 
    // self.backgroundColor = UIColor.orangeColor() 

    setUpTitleText() 
    setupButtonPlay() 
    setupButtonSettings() 
    setupButtonCredits() 
} 

func setUpTitleText(){ 

    gameTitle = UILabel(frame: CGRect(x: 0, y: 0, width: view!.frame.width, height: 300)) 
    gameTitle.textColor = UIColor.blackColor() 
    gameTitle.font = UIFont(name: "Futura", size: 50) 
    gameTitle.textAlignment = NSTextAlignment.Center 
    gameTitle.text = "Game Title" 
    //gameTitle.backgroundColor = UIColor.whiteColor() 

    self.view?.addSubview(gameTitle) 
} 

func setupButtonPlay(){ 

    btnPlay = UIButton(frame: CGRect(x: 100, y: 100, width: 200, height: 100)) 
    btnPlay.center = CGPoint(x: view!.frame.size.width/2, y: 250) 
    btnPlay.titleLabel?.font = UIFont(name: "Futura", size: 25) 
    btnPlay.setTitle("Play", forState: UIControlState.Normal) 
    btnPlay.setTitleColor(UIColor.blueColor(), forState: UIControlState.Normal) 
    //btnPlay.backgroundColor = UIColor.grayColor() 
    btnPlay.addTarget(self, action: #selector(StartMenu.playTheGame), forControlEvents: UIControlEvents.TouchUpInside) 
    self.view?.addSubview(btnPlay) 

} 

func setupButtonSettings(){ 

    btnSettings = UIButton(frame: CGRect(x: 100, y: 100, width: 200, height: 100)) 
    btnSettings.center = CGPoint(x: view!.frame.size.width/2, y: 350) 
    btnSettings.titleLabel?.font = UIFont(name: "Futura", size: 25) 
    btnSettings.setTitle("Settings", forState: UIControlState.Normal) 
    btnSettings.setTitleColor(UIColor.blueColor(), forState: UIControlState.Normal) 
    //btnSettings.backgroundColor = UIColor.grayColor() 
    btnSettings.addTarget(self, action: #selector(StartMenu.pressTheSettings), forControlEvents: UIControlEvents.TouchUpInside) 
    self.view?.addSubview(btnSettings) 
} 

func setupButtonCredits(){ 

    btnCredits = UIButton(frame: CGRect(x: 100, y: 100, width: 200, height: 100)) 
    btnCredits.center = CGPoint(x: view!.frame.size.width/2, y: 450) 
    btnCredits.titleLabel?.font = UIFont(name: "Futura", size: 25) 
    btnCredits.setTitle("Credits", forState: UIControlState.Normal) 
    btnCredits.setTitleColor(UIColor.blueColor(), forState: UIControlState.Normal) 
    //btnCredits.backgroundColor = UIColor.grayColor() 
    btnCredits.addTarget(self, action: #selector(StartMenu.pressTheCredits), forControlEvents: UIControlEvents.TouchUpInside) 
    self.view?.addSubview(btnCredits) 
} 

func playTheGame(){ 
    self.view?.presentScene(GameScene(), transition: SKTransition.crossFadeWithDuration(1.0)) 
    btnPlay.removeFromSuperview() 
    gameTitle.removeFromSuperview() 
    btnCredits.removeFromSuperview() 
    btnSettings.removeFromSuperview() 

    if let scene = GameScene(fileNamed: "GameScene"){ 
     let skView = self.view! as SKView 

     skView.ignoresSiblingOrder = true 

     scene.scaleMode = .AspectFill 
     skView.presentScene(scene) 
    } 
} 

func pressTheSettings(){ 
    self.view?.presentScene(TheSettings(), transition: SKTransition.crossFadeWithDuration(1.0)) 
    btnPlay.removeFromSuperview() 
    gameTitle.removeFromSuperview() 
    btnCredits.removeFromSuperview() 
    btnSettings.removeFromSuperview() 

    if let scene = TheSettings(fileNamed: "TheSettings"){ 
     let skView = self.view! as SKView 

     skView.ignoresSiblingOrder = true 

     scene.scaleMode = .AspectFill 
     skView.presentScene(scene) 
    } 
} 

func pressTheCredits(){ 
    self.view?.presentScene(TheCredits(), transition: SKTransition.crossFadeWithDuration(1.0)) 
    btnPlay.removeFromSuperview() 
    gameTitle.removeFromSuperview() 
    btnCredits.removeFromSuperview() 
    btnSettings.removeFromSuperview() 

    if let scene = TheCredits(fileNamed: "TheCredits"){ 
     let skView = self.view! as SKView 

     skView.ignoresSiblingOrder = true 

     scene.scaleMode = .AspectFill 
     skView.presentScene(scene) 
    } 
} 

} 

在这种情况下我已经硬编码的标题和按钮,但如果你愿意,你可以添加自己的图像。这只是创建菜单的一种简单方法,但还有很多其他方法可以实现此目的。随着你的前进,你可以建立自己的反正你喜欢的。

祝你好运。