私は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変数の番号を追加するだけで、シーンがあります。
私は間違っていると思いますか?そして、これが正しい方法でないなら、それは何ですか?
ありがとうございました!
によってレベルを取得することができますUserDefaults' 'に' SKScene'オブジェクトを保存しようとしていますか?もしあなたがそうであれば、それを単に文字列に変換して保存することはできません。 –
文字列をsksceneに変換することはできません。あなたはsksceneオブジェクトをuserdefaultに保存する必要があります。 –
このスレッドに従うと、あなたに役立つかもしれません。 https://stackoverflow.com/questions/26469457/saving-custom-swift-class-with-nscoding-to-userdefaults @Alex –