2017-11-21 3 views
0

私は24レベルのゲームを作っています。NSUserDefaultsを使用して、そのレベルの値をその値に設定して私のレベルを教えています。SKSceneの名前として文字列を使用するには

NSUserDefaultの値を取得して文字列として設定しようとしているため、シーンを表示するときにどのレベルに進むかがわかります。しかし何らかの理由でそれが機能していません。私は文字列をSKSceneに変換できないと言います。

userdefaultは、番号レベル(1,2,3など)を保存します。その番号で、私はそのシーンに行きたいです(Level1、Level2など)。文字列 "Level%i"に番号を付けて、その文字列を使ってシーンを提示しようとしています。しかし、文字列をSKSceneに変換できないと私に言わせてはいません。ここで

はレベルのシーンを提示するために使用するコードです:ここでは

if self.atPoint(location) == NextLevelButton{ 

     let LevelSelection = UserDefaults.standard.object(forKey: "LevelSelection") //as? String 




     let level2 = NSString(format: "Level%@", LevelSelection! as! SKScene) // Here is where I try to make a string and convert it into a SKScene 

     removeAllActions() 
     removeAllChildren() 
     let scene = level2 (size: self.size) // I get an error here "Cannot call value of non-function type 'NSString'" 
     let sKView = self.view! as SKView 
     sKView.ignoresSiblingOrder = true 
     scene.scaleMode = .aspectFill 

     sKView.presentScene(scene) 

は、レベル1のシーン内のコードの他の部分である:

let defaultLevel = 1 
UserDefaults.standard.set(defaultLevel, forKey: "LevelSelection") 

シーンの名前はレベル1、レベル2です、文字列 "Level"にNSUserDefualt変数の番号を追加するだけで、シーンがあります。

私は間違っていると思いますか?そして、これが正しい方法でないなら、それは何ですか?

ありがとうございました!

+0

によってレベルを取得することができますUserDefaults' 'に' SKScene'オブジェクトを保存しようとしていますか?もしあなたがそうであれば、それを単に文字列に変換して保存することはできません。 –

+0

文字列をsksceneに変換することはできません。あなたはsksceneオブジェクトをuserdefaultに保存する必要があります。 –

+0

このスレッドに従うと、あなたに役立つかもしれません。 https://stackoverflow.com/questions/26469457/saving-custom-swift-class-with-nscoding-to-userdefaults @Alex –

答えて

1

これはできません。文字列はオブジェクトに変換できません。

可能な解決策が配列である:

let levels : [SKScene] = [level1, level2, level3] 

その後、インデックス

let levelSelection = UserDefaults.standard.integer(forKey: "LevelSelection") 
let scene = levels[levelSelection - 1] 
+0

こんにちは、シーンを変更するときに "let scene = levels [1](size:self.size)"というコードを入力するとエラーになる「非機能型SK SKeneの値を呼び出すことができないのは、コードを書き込む特定の方法ですか?(サイズ:self.size)と関連があります。 –

+0

問題を修正しました。 (レベル:[レベル1(サイズ:self.size)、レベル2(サイズ:self.size)]) 。 お手伝いありがとう! –

関連する問題