Так что im кодирование похожей игры на 4 изображения 1 слово. Я хочу, чтобы, когда я, например, на 5-м уровне, и я закрываю игру и удаляю ее из своей истории, снова возвращаюсь в игру и нажимаю «Воспроизвести», чтобы продолжить на уровне 5. Я пробовал это с глобальной переменной (levelNumber) которым является ИНТ и имеет значение 1, что означает, что он находится выше classLevel1: Skscene {:Как изменить глобальный int в SpriteKit с помощью Swift?
var levelNumber = 1
class Level1: SKScene {
в функции Win уровня 1 я поставил значение levelNumber до 2 (потому что вы закончили уровень 1) и кроме того, что:
func Win() {
levelNumber == 2
NSUserDefaults.standardUserDefaults().setInteger(levelNumber, forKey: "levelNumber")
}
* редактировать В MainMenu сцены я сказал:
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
if levelNumber == 1 {
let Level = Level1(size: self.size)
Level.scaleMode = scaleMode
let transition = SKTransition.fadeWithDuration(0.5)
self.view?.presentScene(Level, transition: transition)
}
else if levelNumber == 2{
let Level = Level2(size: self.size)
Level.scaleMode = scaleMode
let transition = SKTransition.fadeWithDuration(0.5)
self.view?.presentScene(Level, transition: transition)
}
else if levelNumber == 3 {
let Level = Level3(size: self.size)
Level.scaleMode = scaleMode
let transition = SKTransition.fadeWithDuration(0.5)
self.view?.presentScene(Level, transition: transition)
}
И так далее для всех уровней.
Heres код в AppDelegate.swift
import UIKit
@UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var oldScore : Int = NSUserDefaults.standardUserDefaults().integerForKey("oldScore")
var oldlevelNumber : Int = NSUserDefaults.standardUserDefaults().integerForKey("oldlevelNumber")
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
Score += oldScore
levelNumber += oldlevelNumber
return true
}
func applicationWillTerminate(application: UIApplication) {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
NSUserDefaults.standardUserDefaults().setInteger(Score, forKey: "oldScore")
NSUserDefaults.standardUserDefaults().synchronize()
NSUserDefaults.standardUserDefaults().setInteger(levelNumber, forKey: "oldlevelNumber")
NSUserDefaults.standardUserDefaults().synchronize()
}
Но по какой-то причине, когда я нажимаю Play, перейдите на 1-го уровня (не вызывающей функции выигрыша), а затем перезапустить игру и нажмите кнопку воспроизведения, когда я иду в Уровень 2 без выигрыша уровня 1, почему?
'LevelNumber' не то же самое, как' levelNumber'. Кроме того, переменные всегда должны начинаться с строчной буквы. –
Извините, я написал это неправильно, в моем коде это то же самое, что и другие, так что его нижний регистр. –
Где находится 'Score'? –