2016-05-06 3 views
1

Так что 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, почему?

+0

'LevelNumber' не то же самое, как' levelNumber'. Кроме того, переменные всегда должны начинаться с строчной буквы. –

+0

Извините, я написал это неправильно, в моем коде это то же самое, что и другие, так что его нижний регистр. –

+0

Где находится 'Score'? –

ответ

2

В функции Win, установите переменную так:

levelNumber = 2 

Вместо

levelNumber == 2 
+0

все еще не работает:/ –

+1

Ваш текущий код кажется прекрасным ... Не могли бы вы показать еще? – penatheboss

+0

Да, конечно, что вы хотите увидеть? –

1

Я предполагаю, что вы хотите назначить score и levelNumber, а не добавлять к ним.

Что у вас есть:

score += oldScore 
levelNumber += oldlevelNumber 

То, что вы, вероятно, хотите:

score = oldScore 
levelNumber = oldlevelNumber 
+0

без + он вообще не работает. –

+0

@LukasDomeisen Я предлагаю переосмыслить некоторые основы Swift, прежде чем продолжить работу с вашим приложением. Вы столкнетесь с множеством проблем, если не знаете разницы между '+ =' и '=', или '=' и '=='. –

+0

Я почти закончил игру, вот и все, что осталось, я не могу сейчас просто отказаться. И если вы не можете найти решение, я найду кого-то другого, кто может это сделать. –

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