2016-02-18 2 views
1

Я пытался создать игру в комплекте спрайтов, и я хочу реализовать начальный экран с кнопкой воспроизведения, которая приведет вас к реальной игре. Я видел много способов сделать это, но большинство из них использует быстрые 1, и не в курс Вот код для моей функцииПереключение сцен в SpriteKit Swift 2

func switchScene() 
{ 
    let scene = GameScene(fileNamed: "PlayScene") 
    let transition = SKTranstion.crossFadeWithDuration(1) 
    self?.view.presentScene(scene, transition) 
} 

где PlayScene является быстр классом, который расширяет SKScene

+0

Так в чем же проблема? ;) Есть ли ошибки? Вы создали как StartScene.sks, так и PlayScene.sks? И у вас есть опечатка, это 'SKTransition', а не' SKTranstion' – Whirlwind

ответ

0

В моих играх, я использую это:

// Setting a size (or else it may look like its zoomed in) 
var selectView = BallSelect(size: view!.bounds.size) 
// Setting a file for that scene 
selectView = BallSelect(fileNamed: "BallSelect")! 
// Setting the scale 
selectView.scaleMode = SKSceneScaleMode.AspectFill 
// Transitioning scenes wit a specific transition 
self.scene?.view?.presentScene(selectView, transition: SKTransition.fadeWithColor(color, duration: 1)) 

Скажите, если это работает :)

+0

Мне пришлось немного поработать с разворачиванием, но (если пусть оператор с selectView = PlayScene (fileNamed: "")), но, кроме того, он работал очень хорошо –

0

Что Важно здесь иметь два файла .sks, потому что вы используете инициализатор удобства использования SKNode fileNamed:. Так что, если вы еще не сделали это уже, перейти к

File -> New -> Файл ...-> ресурсо-> SpriteKit игры сцена

и добавить новый файл .sks , Теперь, потому что fileNamed: объявлен как failable инициализатора, он может возвращать ноль:

public convenience init?(fileNamed filename: String) 

Вы должны использовать опциональные привязки для доступа к вашей новой сцене в безопасно пути:

StartScene.swift

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 

     if let scene = PlayScene(fileNamed: "PlayScene"){ 
      let transition = SKTransition.crossFadeWithDuration(1) 
      view?.presentScene(scene, transition: transition) 
     }  
} 
+0

. Я провел некоторое тестирование с этим, и механизм кнопки, который я реализовал, работал, но программа не пройдет мимо оператора if if scene = PlayScene. Постскриптум спасибо за помощь до сих пор –

Смежные вопросы