[英]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.