簡體   English   中英

如何使用字符串作為SKScene的名稱

[英]How can I use a string as a name for the SKScene

我使用24個關卡制作游戲,並且使用NSUserDefaults通過將其值設置為關卡編號來告知我處於哪個關卡。

我正在嘗試獲取NSUserDefault值並將其設置為字符串,以便在顯示場景時它將知道要轉到的級別。 但是由於某種原因,它不起作用。 它說我不能將字符串轉換為SKScene。

用戶默認設置保存數字級別(1、2、3等)。 使用該編號,我想轉到名為(Level1,Level2等)的場景,我試圖將該數字附加到字符串“ Level%i”,然后使用該字符串顯示場景。 但這並不是讓我說不能將String轉換為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)

這是Level1場景中代碼的另一部分:

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

場景的名稱是Level1,Level2等。我只需要將NSUserDefualt變量的編號附加到字符串“ Level”中,就可以得到場景

有人知道我在做什么錯嗎? 如果這不是正確的方法,那是什么?

先感謝您 !

你不能那樣做。 字符串不可轉換為對象。

可能的解決方案是數組:

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

然后您可以按索引檢索級別

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM